ジャグ配列の一意の値の数をカウントする方法を知りたいです。
ドメイン オブジェクトに、スペースで区切られた値を持つ文字列プロパティが含まれています。
class MyObject
{
string MyProperty; //e.g = "v1 v2 v3"
}
MyObjectのリストが与えられた場合、一意の値の数をどのように判断できますか?
次の linq コードは、ギザギザの配列値の配列を返します。解決策は、アイテムの一時的な単一の配列を格納し、各ジャグ配列をループして、値が存在しない場合はそれらを追加することです。次に、単純なカウントは値の一意の数を返します。しかし、より良い解決策があるかどうか疑問に思っていました。
db.MyObjects.Where(t => !String.IsNullOrEmpty(t.MyProperty))
.Select(t => t.Categories.Split(new char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries))
.ToArray()
以下は、より読みやすい例です。
array[0] = { "v1", "v2", "v3" }
array[1] = { "v1" }
array[2] = { "v4", "v2" }
array[3] = { "v1", "v5" }
すべての値から、一意の項目はv1、v2、v3、v4、v5です。
固有アイテムの総数は5です。
おそらくlinqを使用して、一意の値のみを返すか、一意の値の数を返すソリューションはありますか?