通过使用String.Join选择GroupBy

时间:2018-06-19 13:43:22

标签: c# linq

我的一行看起来像这样:

var activeEquipList = issued.Union(request).GroupBy(x=>x.EquipID).Select(x=>new EquipList()
{
    EquipCount = x.Count(),
    EquipName = db.tblMasterEquipLists.Find(x.Key).Equipment,
    Serial = x.Where(t => t.EquipID == x.Key).ToArray().Select(g=>g.Serial.Join(",",)) // problem line
}).ToList();

说明

Serial的类型为string。可以有许多相同的对象,但是每个对象都有不同的序列号。该程序已经编写完毕,我不想将Serial的类型更改为List<string>,所以我想我可以加入所有不同的序列号对于相同的设备,并用逗号分隔。

我该如何实现?或者,如果无法实现,那么什么是更好的方法?如果我必须更改Serial的类型,那么我对此持开放态度。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

我认为您可以执行以下操作:

Serial = string.Join(",", x.Where(t => t.EquipID == x.Key).Select(g => g.Serial))

答案 1 :(得分:1)

啊,再喝一口咖啡,我想通了:

var activeEquipList = issued.Union(request).GroupBy(x=>x.EquipID).Select(x=>new EquipList()
{
    EquipCount = x.Count(),
    EquipName = db.tblMasterEquipLists.Find(x.Key).Equipment,
    Serial = string.Join(", ", x.Select(t => t.Serial)
}).ToList();