我尝试选择名称,但现在有重复的名称,我想通过不同的方式选择这些名称,我在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 += "]";
这像这样回报我
['DPSB
','MV','PSB','PSB','PSB','','PSB','PSB','MV','','MV','PSB','','MV','','PSB','MV',因为我不想重复这些名字
任何解决方案
你可以替换
foreach (var c in te)
{
data2 += "'" + c.Name + "',";
}
通过以下代码片段。
foreach (var c in te.Select( x => x.Name ).Distinct())
{
data2 += "'" + c + "',";
}
您还可以使用现有设施并将整个部分重写为
T1 DB = new T1();
var te = DB.tblVni;
string data2
= String.Format("[{0}]",
String.Join( ",", te.te.Select( x => x.Name ).Distinct() ) );
这不需要手动删除终端逗号。但是,总的来说,确实不应该手动生成 Json,有现有的工具,比如这个。
试试这个
var data2 = String.Format("[{0}]", te.Select(i => i.Name).Distinct().Aggregate((v, n) => String.Format("'{0}','{1}'", v,n)));
输出:
['DPSB','MV','PSB']