起始代码: https: //dotnetfiddle.net/lJhMyo
string[] names = { "Burke", "Laptop", "Computer",
"Mobile", "Ahemed", "Sania",
"Kungada", "David","United","Sinshia" };
var empList = new List<Employee> {
new Employee {Name = "Burke", ID = "IHED123"},
new Employee {Name = "David", ID = "QIUHD454"},
new Employee {Name = "Batman", ID = "OIWQE565"},
};
Run Code Online (Sandbox Code Playgroud)
如何构造一个 linq 查询(方法语法)来获取员工姓名位于“names”数组中的所有 Employee 对象?
如果“names”中存在不在 empList 中的字符串,则抛出异常。
编辑:如果 empList 很大并且我想要名称不区分大小写匹配怎么办?
您可以使用.Contains。IE:
var result = empList.Where(x => names.Contains(x.Name));
Run Code Online (Sandbox Code Playgroud)
您可以检查是否缺少名称:
bool noneMissing = !names.Any(n => empList.Any(x => x.Name == n));
Run Code Online (Sandbox Code Playgroud)
.Contains 测试数组或列表是否包含该项目:
var Searched = emptList.Where(x => names.Contains(x.Name));
Run Code Online (Sandbox Code Playgroud)
如果Searched.Length == 0,则没有项目
如果您想要性能使用for loop(没有什么比性能更好)并且不区分大小写使用StringComparer.OrdinalIgnoreCase。
List<string> Searched = new List<string>;
for(int i = 0; i < names.Length; i++)
{
if(emptList.contains(name[i], StringComparer.OrdinalIgnoreCase)
Searched.Add(name[i]);
}
Run Code Online (Sandbox Code Playgroud)