如何创建 LINQ 表达式以从集合中查找包含字符串数组中的名称的元素?
string[] names = ["John", "Hanna", "Bill", "Donald"];
我已经创建了如下表达式,但它不正确。我该如何解决?
result = (x => x.CompanyEmployeeName.Contains(names));
如果你想检查是否names包含x.CompanyEmployeeName,你会想要使用:
result = something.Where(x => names.Contains(x.CompanyEmployeeName));
让myCollection成为具有属性的自定义类的集合Name。您必须根据对象名称应在names数组中可用的条件从该集合中获取所有对象。然后你可以试试这个:
var filteredItems = myCollection.Where(x=> names.Any(y=>y == x.Name));
你需要扭转它。检查名称是否包含员工
var result = db.CompanyEmployee.Where(x => names.Contains(x.CompanyEmployeeName));
如果上下文中的列表大于您的示例数据,则另一种选择是使用 Join
var result = db.CompanyEmployee.Join(names, x=> x.CompanyEmployeeName, n => n, (x,n)=> n);
在您的 LINQ 中,您应该首先有一个集合。例如:如果你有一个列表:listCompanyEmployee 那么你可以使用下面的表达式:
var result = listCompanyEmployee.Where(x => names.Contains(x.CompanyEmployeeName));
您可以使用Array.Exists. 例如,如果您想检查是否names包含CompanyEmployeeName:
result = something.Where(x => Array.Exists(names, name => name == x.CompanyEmployeeName));
你可以Array.IndexOf像这样使用:
result = something.Where(x => Array.IndexOf(names, x.CompanyEmployeeName) != -1);