Linq - 使用linq在列表中获取不可用的ID

时间:2017-05-04 17:54:58

标签: c# linq linq-to-sql

我有一个ID列表" 100,1025,5341"和一个对象列表。我想获取未包含在我的对象列表中的ID。

作为示例,假设对象列表包含100和5341作为属性(例如:ID)。我希望得到1025作为我的结果。我知道这个请求毫无意义,但我想以某种方式得到它。我可以轻松使用,

string idList = "100,1025,5341";
var objectList = _dataService.GetData();
var result = objectList.Any(item=> idList.Contains(item.ID));

获取已提供ID的列表项。但我希望得到其他方式。我想获取列表中不存在的ID。

2 个答案:

答案 0 :(得分:2)

使用Except

var ids= idList.Split(',').Select(int.Parse);
var result = objectList.Where(item=> ids.Contains(item.ID));
var r= objectList.Except(result);

如果您只想要未包含在对象列表中的ID,则可以执行以下操作

 var ids= idList.Split(',').Select(int.Parse);
 var r= ids.Except(ids.Where(i=> objectList.Any(item=> item.ID==i)));

答案 1 :(得分:1)

它会从idList获取不属于objectList的ID的ID。如果我正确地取消你想要的东西......

var ids = objectList.Select(x=>x.ID).ToList();
var otherIdsList = idList.Split(',').Select(x=>int.Parse(x)).ToList().Where(x=> !ids.Contains(x)).ToList();