2011-06-28 13 views
0

同じ値を持つプロパティを持つ複数のオブジェクトがある場合、trueを返すLINQクエリを作成しようとしています。ここで複数の要素がプロパティに対して同じ値を持つかどうかを確認するクエリ?

は、私がこれまでに出ているものです:

Formatters.Where(Function(f As DataModel.Formatter) _ 
                Formatters.Select(Function(f2 As DataModel.Formatter) f2.Name.ToLower()).Contains(f.Name.ToLower())).Count > 1 

上記は、常にリストの多くの後、1つの要素が彼らのしている限り、trueを返しますしかし、誰かがこれで私の手をお願いすることができます?

答えて

2

ここはC#です。 VB.NETに変換するのは簡単でなければなりませんが、私は、Visual Studioは、便利なインストールがありません。

var query = from g in Formatters.GroupBy(f => f.Name, StringComparer.OrdinalIgnoreCase) 
       where g.Count() > 1 
       select g; 

    if (query.Any()){ 
     Console.WriteLine("Duplicate names!"); 
    } 
+0

私はあなたが同様にそこに呼び出すTOLOWER必要疑うが、それ以外それはよさそうです。 –

+0

ToLowerの使用を避けるために、IEqualityComparerを受け付けるGroupByのオーバーロードを使用するようにコードを変更しました。ヘッドアップをありがとう! –

+0

既にGroupByを明示的に使用している場合は、拡張メソッドとしてWhereを使用する価値があります。単純なコードになります。 –

関連する問題