どうな独特な価値観にギザギザ配列
-
24-09-2019 - |
質問
思いでカウントの特性値にギザギザにな配列になります。
私のドメインを含むオブジェクトの文字列をとることをスペース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
呼び出しA>のみ一意の値を選択します:
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();
所属していません StackOverflow