如何比较两个通用列表一个包含int而另一个包含类对象

Rah*_*hul 0 c# generic-list

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

List<int> _GetRecCust;
List<Tranobject> GetTransDeta;
Run Code Online (Sandbox Code Playgroud)

我试过了

var TransactionsToProcess = GetTransDeta.Where(x => _GetRecCust.Contains(Convert.ToInt32(x.ID)));
Run Code Online (Sandbox Code Playgroud)

但无法获得comman ID数据.

两者都有ID一个领域.

提前致谢

Tim*_*ter 5

最efficien牛逼的方法是使用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();
Run Code Online (Sandbox Code Playgroud)

顺便说一句,为什么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;  
Run Code Online (Sandbox Code Playgroud)