我有一个项目列表(InputList)。除此之外,我还有一个名单(名称)。现在我只需要InputList中那些名字出现在Names列表中的项目。
一个解决方案是我在Names列表上做一个循环,检查它是否存在于InputList中。
foreach (var name in names)
{
var result = InputList.FirstOrDefault(i => i.Name == name);
if (result != null)
outputList.Add(result);
}
SQL中有IN运算符,我们提供列表和查询返回所需的结果。我可以使用Linq实现相同的目标吗?
答案 0 :(得分:7)
您想要的是以下内容:
var result = inputList.Where(x=>Names.Contains(x.Name));
上述查询选择inputList的所有元素,其名称包含在Names列表中。
Contains
方法的签名为bool Contains(T item)
,其中T
是列表中包含的对象类型。如果传递给此方法的项目包含在列表中,则返回true。否则,它返回false。
有关Contains
方法的进一步文档,请查看here。