如何比较这两个通用列表并根据 ID 获取匹配数据
List<int> _GetRecCust;
List<Tranobject> GetTransDeta;
我试过
var TransactionsToProcess = GetTransDeta.Where(x => _GetRecCust.Contains(Convert.ToInt32(x.ID)));
但无法获得命令ID
数据。
两者都有ID
作为一个领域。
提前致谢
如何比较这两个通用列表并根据 ID 获取匹配数据
List<int> _GetRecCust;
List<Tranobject> GetTransDeta;
我试过
var TransactionsToProcess = GetTransDeta.Where(x => _GetRecCust.Contains(Convert.ToInt32(x.ID)));
但无法获得命令ID
数据。
两者都有ID
作为一个领域。
提前致谢
最有效的方法是使用Enumerable.Join
:
var common = from x in GetTransDeta
join id in _GetRecCust
on int.Parse(x.Id) equals id
select id;
List<int> commonIDs = common.ToList();
顺便说一句,为什么是Tranobject.Id
字符串?
编辑:既然你评论说有null
s,你可以IsNullOrWhiteSpace
先使用:
var common = from x in GetTransDeta
where !string.IsNullOrWhiteSpace(x.Id)
join id in _GetRecCust
on int.Parse(x.Id) equals id
select id;
试试这个:
GetTransData.Where(gtd => _GetRecCust.Any(grc => grc == int.Parse(gtd.Id))).ToList();