2016-01-08 6 views
5

я имею проблему с объединением двух список объектов здесь они:Объединить два списка объектов

first one 
List<NSKData> NSKDataList = new List<NSKData>(); 

public class NSKData 
{ 
    public string ID { get; set; } 
    public string Issue { get; set; } 
    public string ToolTipInfoText { get; set; } 
    public NSKData() { } 
    public NSKData(string id, string issue, string tooltipinfo) 
    { 
     ID = id; 
     Issue= issue; 
     ToolTipInfoText = tooltipinfo; 
    } 
} 

second one 
List<IssuesMoreInfo> IssuesMoreInfoList = new List<IssuesMoreInfo>(); 

public class IssuesMoreInfo 
{ 
    public string ID { get; set; } 
    public string IssueMoreInfoText { get; set; } 
} 

Если я могу получить все необходимые данные в одно время, я не буду задавать этот вопрос, но я 'хватаю все данные за кулак, и только после того, как я получу данные для второго.

Итак, что мне нужно в результате: , чтобы получить IssueMoreInfo со второго, в соответствии с идентификатором в обоих, как и для идентификатора 10 в первом, мы получаем столбец IssueMoreInfoText во втором и передаем его в один список в колонка ToolTipInfoText

Надежда на вашу помощь, ребята, спасибо

+0

Как бы то ни было, неясно, что именно вы хотите, чтобы ваш результат выглядел. Это может помочь, если вы можете привести пример своего ввода и каким должен быть результат. – germi

+0

im захватывает из некоторого bugtracker в Интернете, разбирает его, и после заполнения списка с данными, важно ли это? 'Еогеасп (вар rowrow в NeededIssuesDataList) { NSKDataList.Add (новый NSKData() { ID = rowrow.ID, выпуск = Выпуск ToolTipInfo = "Нет информации" }); } ' – GGodlike

+0

Вы получаете данные db? –

ответ

4

Я предполагаю, что вы ищете Enumerable.Join:

var query = from data in NSKDataList 
      join info in IssuesMoreInfoList 
      on data.ID equals info.ID 
      select new NSKData(data.ID, data.Issue, info.IssueMoreInfoText); 
NSKDataList = query.ToList(); 

Другой способ, который не нужно заново создавать все объекты и список:

var infoIdLookup = IssuesMoreInfoList.ToLookup(i => i.ID); 
foreach(NSKData data in NSKDataList) 
{ 
    data.ToolTipInfoText = infoIdLookup[data.ID] 
     .Select(i => i.IssueMoreInfoText) 
     .FirstOrDefault(); 
} 
2

Попробуйте использовать Linq Регистрация

var query = from c in NSKDataList 
      join o in IssuesMoreInfoList on c.ID equals o.ID 
      select new { c.ID, c.Issues , c.ToolTipInfoText , o.IssueMoreInfo }; 

завещание запрос содержит информацию из обоих списков

http://www.dotnetperls.com/join

0

Чтобы использовать Linq его легче сделать:

NSKDataList.ForEach(nskData => nskData.ToolTipInfoText = IssuesMoreInfoList.Where(imf => imf.ID == nskData.ID).SingleOrDefault().IssueMoreInfoText); 

Что это делает:

Foreach элемент NSKDataList он изменит свое ToolTipInfoText где вы идете в IssuesMoreInfoList и фильтровать его ID в соответствии с просьбой, а затем получить один вернулся или по умолчанию (если она не была выбрана) и получить его IssueMoreInfoText ,

Смежные вопросы