LINQ - GROUP BY对象创建字符串

时间:2014-11-27 12:05:45

标签: c# linq

所以我有一个名为Version

的对象

它包含STATES列表和DATES列表

我想先:

  1. 按状态分组,并创建所有状态的字符串(以逗号分隔)
  2. 按日期分组,并创建所有日期的字符串(以逗号分隔)
  3. 以下是我的尝试:

    Date = Version.States.GroupBy(v => v.Date).Select(vh => vh.ToString()).ToString(),
    State = Version.States.GroupBy(s => s.State).Select(st => st.ToString()).ToString()
    

    有人可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

您无需使用GroupBy,您可以使用Distinct获取更高效的唯一项目。然后,您可以使用String.Join来构建字符串:

var uniqueStates = Version.States.Select(vs => vs.State).Distinct();
var uniqueDates  = Version.Dates.Select(vd => vd.Date).Distinct();
string commaSeparatedStates = String.Join(",", uniqueStates);
string commaSeparatedDates  = String.Join(",", uniqueDates);

答案 1 :(得分:0)

您可以使用string.Join

string all = string.Join( ","
                        , Version.States.GroupBy
                          ( s => s.State )
                          .Select(st => st.ToString())
                          )
                        );

答案 2 :(得分:0)

您需要使用string.Join试试这个。

var Dates = string.Join(",",Version.States.GroupBy(v => v.Date).Select(vh => vh.ToString()));
var States = string.Join(",",Version.States.GroupBy(s => s.State).Select(st => st.ToString()));

答案 3 :(得分:0)

试试这个:

    var states = Version.States.Aggregate(string.Empty, (c, state) => c + state.ToString() + ",").TrimEnd(new []{','});
    var dates = Version.Dates.Aggregate(string.Empty, (c, date) => c + date.ToString() + ",").TrimEnd(new []{','});