3

私は C# の初心者なので、質問があります。データベースにたくさんの名前があります。LINQ で double のない名前のデータを表示するスクリプトを作成するにはどうすればよいですか? ここに例があります:

string[] names = {hello, hello, stack, stack, overflow, overflow};

これを行う方法がわかりません。誰かがその方法を示す簡単なスクリプトを作成できます。残りは自分で解決できます。

4

5 に答える 5

7

どうぞ:

string[] names = {"hello", "hello", "stack", "stack", "overflow", "overflow"};  
var distinctNames = names.Distinct();

foreach(String distinctName in distinctNames) 
    Console.WriteLine(distinctName);
于 2013-02-28T00:12:24.647 に答える
4

これもうまくいくはずです。

names.Distinct().ToList().ForEach( n => Console.WriteLine(n));
于 2013-02-28T00:22:31.763 に答える
2

一部の回答が承認済みとマークされたという事実にもかかわらず、配列にオブジェクトがあり、そのオブジェクトのプロパティに基づいて区別する必要がある状況で遭遇する可能性のある予期しない問題に関する重要な情報を追加できると思います。

そのような状況では、LINQ の Distinct() 関数が正しく機能しない可能性があるため、次のような回避策を使用する必要があります (同じ結果が得られます)。

var elems = someArray.GroupBy(x=>x.RpopertyToCompare).Select(y=>y.First());

ここで詳細を読むことができます: http://blog.jordanterrell.com/post/LINQ-Distinct()-does-not-work-as-expected.aspx

于 2013-02-28T01:04:55.037 に答える
1

Distinctを使用できます。

これを試して:

string[] names = {"hello", "hello", "stack", "stack", "overflow", "overflow"};
var uniqueNames = (from c in names select c).Distinct();
foreach(String s in uniqueNames) Console.WriteLine(uniqueNames);
于 2013-02-28T00:13:45.603 に答える
0
var duplicates = suppliers_arr
    .GroupBy(i => i)
    .Where(g => g.Count() > 1)
    .Select(g => g.Key); 
if(duplicates.Count() > 0){
    foreach (var d in duplicates)
    {
        ModelState.AddFormError(string.Format("{0} is duplicated",d.ToString()));
    }
}else{
     //no duplicates
}
于 2014-01-22T12:47:21.267 に答える