2016-07-12 11 views
1

Ich versuche Namen auswählen, aber es gibt Namen, die Wiederholung ist jetzt möchte ich diese durch verschieden wählen, wie ich diese Linq in getanNamen disintct in Linq

string data2 = "["; 
T1 DB = new T1(); 
var te = DB.tblVni; 

foreach (var c in te) 
{ 
    data2 += "'" + c.Name + "',"; 
} 

data2 = data2.Substring(0, data2.Length - 1); 
data2 += "]"; 

diese mir zurück wie diese

[ "DPSB", "MV", "PSB", "PSB", "PSB", "PSB", "PSB", "MV", "", "", "", "", "", 'MV', 'PSB', '', 'MV', 'MV', 'MV', '', 'PSB', 'MV',

wo, wie ich möchte nicht, diese Namen wiederholen

beliebig gelöst Ion

+2

Diese auf Ihre Frage nicht verwandt ist, aber man sollte nicht JSON manuell zu bauen. Es gibt viel bessere Möglichkeiten. – JLRishe

Antwort

1

Sie könnten

foreach (var c in te) 
{ 
    data2 += "'" + c.Name + "',"; 
} 

durch das folgende Snippet ersetzen.

foreach (var c in te.Select(x => x.Name).Distinct()) 
{ 
    data2 += "'" + c + "',"; 
} 

Sie können auch die vorhandenen Einrichtungen nutzen und den gesamten Teil als

T1 DB = new T1(); 
var te = DB.tblVni; 

string data2 
    = String.Format("[{0}]", 
      String.Join(",", te.te.Select(x => x.Name).Distinct())); 

umschreiben, die nicht die manuelle Entfernung des Terminals Kommas erfordern würden. Insgesamt sollte Json jedoch nicht manuell erzeugt werden, dafür gibt es Tools, wie .

0

dieses

var data2 = String.Format("[{0}]", te.Select(i => i.Name).Distinct().Aggregate((v, n) => String.Format("'{0}','{1}'", v,n))); 

Ausgang Versuchen:

['DPSB','MV','PSB']