質問

思いでカウントの特性値にギザギザにな配列になります。

私のドメインを含むオブジェクトの文字列をとることをスペースdelimitered値です。

class MyObject
{
    string MyProperty; //e.g = "v1 v2 v3"
}

与えられ リストMyObject'sたいのですがどの数の独自の価値?

以下の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、を返しますのいずれかの独自の価値や数を返します独自の価値?

役に立ちましたか?

解決

はい、LINQでこれは非常に簡単です。ジャグ配列をフラット化した最初の使用 SelectManyするすべての値を含むIEnumerable<string>にして、 Distinct のみ一意の値を選択します:

IEnumerable<string> uniqueValues = array.SelectMany(x => x).Distinct();

あなたがそれらをカウントしたい場合は、 Count に使用します。

IEnumerable<string> uniqueValues = array.SelectMany(x => x).Distinct();
int uniqueCount = uniqueValues.Count();

他のヒント

クエリ表現方法がある

var query = (from arr in array
             from value in arr
             select value).Distinct();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top