-4

嗨,我有通用列表 ob 对象学校。将 schoolId 作为 GUID,将学校名称作为字符串。

说具有学校 ID 和学校名称属性的对象学校列表:

                  School Id              Name
'C33BB532-895B-4DB7-BA59-1BC5B580902B'=> "S1"
'C33BB532-895B-4DB7-BA59-1BC5B580902B'=> "S2"
'C33BB532-895B-4DB7-BA59-1BC5B580902B'=> "S3"
'3454D83D-68CA-4A9C-9185-1E49AE1C16DC'=> "S4"
'3454D83D-68CA-4A9C-9185-1E49AE1C16DC'=> "S5"
'3454D83D-68CA-4A9C-9185-1E49AE1C16DC'=> "S6"

我需要在选择项目列表中这样的输出来填充下拉列表:

     ID                                      Value
'C33BB532-895B-4DB7-BA59-1BC5B580902B' =>  "S1,S2,S3" 
'3454D83D-68CA-4A9C-9185-1E49AE1C16DC'=>   "S4,S5,S6"

我正在将 c# 与 MVC 一起使用。我怎样才能得到这个?

4

2 回答 2

1

你可以用GroupBy. 假设您的配对存储在这样的类中:

class Pair {
    public Guid Id {get;set;}
    public string Val {get;set;}
}

您可以按如下方式产生所需的结果:

foreach (var g in data.GroupBy(p=>Id)) {
    Console.WriteLine(                  // Change this to the desired destination
        "{0} => {1}"
    ,   g.Key                                     // Produces GUID
    ,   string.Join(",", g => g.Select(p=>p.Val)) // Makes a comma-separated list
    );
}
于 2013-10-28T11:00:26.310 回答
0

在 LINQ 中尝试 group by,例如

var res = from g in yourlist.GroupBy(c => c.Id)
          select new { SchoolId = g.Key, SchoolName = string.Join(",", g.Select(gg => gg.name).ToArray()) };
于 2013-10-28T11:03:59.420 回答