我正在尝试找到使用 C# (3.5) 过滤列表的最佳方法,但我似乎找不到任何与我的情况相似的示例。我愿意使用 lambdas 或 linq。
与我发现的大多数示例相比,独特之处在于我的列表项每个都有子数组,例如......
var employees= new List<Employee>
{
new Employee{Name = "John",Nicknames="'J','Big J','Big John'"},
new Employee{Name = "Joshua",Nicknames="'J','Josh','Joshman'"},
}
然后,我想过滤该列表,如下所示...
//using linq
var matchesByNickname =
from worker in employees
where worker.Nicknames.Equals("J")
select worker;
//or lambda
var employees2 = employees
.Where(e => Nicknames.Exists(n => n.Nickname == "J"))
但当然,由于 Nicknames 本身就是一个数组,我不能使用 .Equals 或 .Contains 等。过滤这种类型的列表的最佳方法是什么?
更新:为了让我的例子简单,我误导了你一点。列表项上确实有真正的对象数组,而不是字符串。我的真实示例是自定义产品对象列表。product 对象上有一个 Regions 属性,它是 Region 对象的列表。一个产品可以没有、1 个或多个区域。区域对象具有名称和 ID。所以我真正想要的是为分配给某个地区的任何产品过滤产品列表。