C# (3.5) でリストをフィルタリングするための最良の方法を見つけようとしていますが、私の状況に似た例が見つからないようです。私はラムダまたは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 などは使用できません。このタイプのリストをフィルタリングする最善の方法は何でしょうか?
更新: 私の例を単純に保つために、私はあなたを少し誤解させました。リスト項目には、文字列ではなく、真のオブジェクト配列があります。私の実際の例は、カスタム製品オブジェクトのリストです。製品オブジェクトには、Region オブジェクトのリストである Regions プロパティがあります。製品には、リージョンをまったく持たないことも、1 つまたは複数持つこともできます。領域オブジェクトには名前と ID があります。したがって、私が本当に望んでいるのは、特定の地域に割り当てられた製品について、製品のリストをフィルタリングすることです。