コンマで区切られた ID を持つ列があり、これを LINQ のリストに取得します。
私がする必要があるのは、このリスト内のすべての値が別のリストに存在する DataRows のみを返すことです。存在する場合は機能しますが、すべてが必要です。
以下のコード:
results =
results.Where(
d => d["FilterIDs"] != null && // Check the row has FilterIds
!filterValues.Except(
d["FilterIDs"].ToString().Split(',').ToList(). // Tokenise the string
Where(s => !String.IsNullOrEmpty(s)).ToList(). // Filter out bad tokens
ConvertAll<int>(s => Convert.ToInt32(s)) // Convert all the tokens to ints
).Any());
}
たとえば、「FilterIDs」列に 1,2,3,4 を含む行があります。
次に、List 'filterValues' に 1,2,3,4,5,6,7 があります。この場合、この行が返されます。
別の行には 1,8,9 があり、一致するのは 1 つだけなので、これは返されません。
私はぐるぐる回っていて、これで意志を失ったので、どんな助けも大歓迎です。