合并两个列表对象
本文关键字:两个 列表 对象 合并 | 更新日期: 2023-09-27 18:29:25
我在合并两个对象列表时遇到问题它们在这里:
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一样,我们在第二个中获得IssueNoreInfoText列,并将其传递给ToolTipInfoText 列中的第一个列表
希望你们的帮助,伙计们,谢谢
我想您正在寻找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();
}
尝试使用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 };
查询将包含来自两个列表的信息
http://www.dotnetperls.com/join
要使用Linq,它更容易做到:
NSKDataList.ForEach(nskData => nskData.ToolTipInfoText = IssuesMoreInfoList.Where(imf => imf.ID == nskData.ID).SingleOrDefault().IssueMoreInfoText);
它的作用是:
对于NSKDataList
中的每个元素,它都会更改其ToolTipInfoText
,您可以转到IssuesMoreInfoList
并根据请求通过ID
对其进行筛选,然后获得返回的或默认的(如果未选择),并获得其IssueMoreInfoText
。