0

如何比较这两个通用列表并根据 ID 获取匹配数据

List<int> _GetRecCust;
List<Tranobject> GetTransDeta;

我试过

var TransactionsToProcess = GetTransDeta.Where(x => _GetRecCust.Contains(Convert.ToInt32(x.ID)));

但无法获得命令ID数据。

两者都有ID作为一个领域。

提前致谢

4

2 回答 2

5

有效的方法是使用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字符串?

编辑:既然你评论说有nulls,你可以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;  
于 2013-11-06T13:33:13.150 回答
2

试试这个:

GetTransData.Where(gtd => _GetRecCust.Any(grc => grc == int.Parse(gtd.Id))).ToList();
于 2013-11-06T13:33:31.620 回答