我在合并两个对象列表时遇到问题 他们在这里:
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,根据两者中的ID,比如第一个中的id 10,我们在第二个中获取IssueMoreInfoText列并将其传递给第一个列中的第一个列表ToolTipInfoText
希望你的帮助,伙计们,谢谢
答案 0 :(得分: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();
}
答案 1 :(得分:2)
尝试使用Linq Join
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 };
查询将包含两个列表中的信息
答案 2 :(得分:0)
使用Linq更容易:
NSKDataList.ForEach(nskData => nskData.ToolTipInfoText = IssuesMoreInfoList.Where(imf => imf.ID == nskData.ID).SingleOrDefault().IssueMoreInfoText);
它的作用是:
NSKDataList
中的Foreach元素,它将更改其ToolTipInfoText
,您将转到IssuesMoreInfoList
,并根据请求按ID
过滤它,然后返回一个或默认(如果没有被选中)并获得其IssueMoreInfoText
。