我有一个如下表:我需要显示它没有重复。所以我需要单独为客户分组。 c1同时具有'名称'
Id Name customer
1 XXXX c1
2 YYYY c1
我需要获取c1上的值:xxx,yyy。但它得到了c1:xxx和c1:yyy 我的代码是:
public List<data> GetComponentStatus()
{
List<data> d= null;
using(var entity=new FM())
{
d = entity.getdata()
.Select(
a => new data
{
Customer = a.id,
Name = a.name,
})
.GroupBy(a=>a.Customer).Select(a=>a.FirstOrDefault()).ToList();
}
return d;
}
据此,我在使用LastorDefault()时获得了第一条记录或最后一条记录。
我希望在单个客户C1上同时获得“名称”。
答案 0 :(得分:0)
如果我理解正确,您希望按Customer
进行分组,并以逗号分隔Name
。我创建了你的示例数据,并在查询语法中编写了LINQ。请参阅下面的rextester上的演示输出。
var data = new[] { new {ID = 1,Name = "XXXX", customer= "C1"},
new {ID = 2,Name = "YYYY", customer= "C1"},
};
var query = from a in data
group a by a.customer into grp
select new {Cutomer= grp.Key ,Name = string.Join(",",grp.Select (g => g.Name)) };
foreach (var e in query)
{
Console.WriteLine("Customer: {0} ,Name: {1}", e.Cutomer,e.Name);
}
上进行演示
所以你的代码应该是这样的
public List<data> GetComponentStatus()
{
using(var entity=new FM())
{
var d = from a in entity.getdata()
group a by a.customer into grp
select new data {Cutomer= grp.Key ,Name = string.Join(",",grp.Select (g => g.Name))};
return d.ToList();
}
}