C# Linq-使用Linq获取列表中不可用的ID

C# Linq-使用Linq获取列表中不可用的ID,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我有一个ID列表“10010255341”和一个对象列表。我想获得不包括在我的对象列表中的ID 例如,假设objects列表包含100和5341作为属性(例如:ID)。我想得到1025作为我的结果。我知道这个要求毫无意义,但我想以某种方式得到它。我可以很容易地使用 string idList = "100,1025,5341"; var objectList = _dataService.GetData(); var result = objectList.Any(item=> idLis

我有一个ID列表“10010255341”和一个对象列表。我想获得不包括在我的对象列表中的ID

例如,假设objects列表包含100和5341作为属性(例如:ID)。我想得到1025作为我的结果。我知道这个要求毫无意义,但我想以某种方式得到它。我可以很容易地使用

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

获取具有给定ID的列表项。但我想换一种方式。我想获取列表中不存在的ID。

使用
除了

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)));

它将从
idList
获取ID,这些ID不是
objectList
的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();

@elgonzo我只能得到“1025”(根据我的例子)作为结果吗?用Linq而不是objectList查询你的空闲列表。(objectList没有id为1025的项,因此查询objectList永远不会得到1025,因为它不在其中…)首先将idList字符串转换为数组/列表。使用
。Where
而不是
。任何
(阅读MSDN文档找出原因)是的,我在这里犯了一个错误。谢谢你的回复:)只要有帮助;)@octavioccl谢谢:)