C# “从集合中查找元素”包含字符串数组中的名称
如何创建LINQ表达式以从包含字符串数组名称的集合中查找元素C# “从集合中查找元素”包含字符串数组中的名称,c#,linq,C#,Linq,如何创建LINQ表达式以从包含字符串数组名称的集合中查找元素 string[] names = ["John", "Hanna", "Bill", "Donald"]; 我创建了如下表达式,但它不正确。我怎样才能解决这个问题 result = (x => x.CompanyEmployeeName.Contains(names)); 让myCollection成为具有属性Name的自定义类的集合。您必须根据对象名称在名称数组中可用的条件从该集合中获取所有对象。然后你可以试试这个: va
string[] names = ["John", "Hanna", "Bill", "Donald"];
我创建了如下表达式,但它不正确。我怎样才能解决这个问题
result = (x => x.CompanyEmployeeName.Contains(names));
让
myCollection
成为具有属性Name
的自定义类的集合。您必须根据对象名称在名称
数组中可用的条件从该集合中获取所有对象。然后你可以试试这个:
var filteredItems = myCollection.Where(x=> names.Any(y=>y == x.Name));
我添加了一个工作示例您需要反转它。检查姓名是否包含该员工 另一个选项是使用Join,如果上下文中的列表比示例数据大,则首选该选项
var result = db.CompanyEmployee.Join(names, x=> x.CompanyEmployeeName, n => n, (x,n)=> n);
如果要检查
名称
是否包含x.CompanyEmployeeName
,则需要使用:
result = something.Where(x => names.Contains(x.CompanyEmployeeName));
在你的LINQ中,你应该先收集。 例如:如果您有一个列表:listCompanyEmployee,那么您可以使用以下表达式:
var result = listCompanyEmployee.Where(x => names.Contains(x.CompanyEmployeeName));
你可以用。如果要检查名称
是否包含公司员工姓名
的示例:
result = something.Where(x => Array.Exists(names, name => name == x.CompanyEmployeeName));
您可以使用以下命令:
假设
x
是一名员工,您可能有一组员工。你能给我们看看吗?请记住,您在提问时提供一段时间是很重要的,否则我们可能无法提供帮助。contains的用法必须颠倒:名称。contains(x.COMPANYEMPLOYENAME)
取决于某物的大小
和名称
,您可能想改用Join
。这与建议副本中接受的答案有何不同?我认为这行不通,因为。任何(…)
都需要谓词。.Name
是一个字符串。@WillemVanOnsem:谢谢你纠正我的错误。我已经根据建议用一个工作示例更新了我的帖子。这与建议副本中的已接受答案有何不同?这与建议副本中的已接受答案有何不同?或者与我这里的两个答案不同?对不起,我认为这是因为我们同时有相似的答案(我的互联网连接非常慢)。
result = something.Where(x => Array.Exists(names, name => name == x.CompanyEmployeeName));
result = something.Where(x => Array.IndexOf(names, x.CompanyEmployeeName) != -1);