如何分组列表<>对象

时间:2014-09-22 10:57:42

标签: c# list

我创建了一个表示数据库查询聚合记录的类:

class list2d
{
    private string ser;
    private DateTime dat;
    private int howmuch;


    public list2d(string ser, DateTime dat, int howmuch)
    {
        this.ser = ser;
        this.dat = dat;
        this.howmuch = howmuch;
    }

    public string Ser { get; set; }
    public DateTime Dat { get; set; }
    public int HowMuch { get; set; }
}

因此每个对象都会返回有关数量(如何)的信息(每天一个分发渠道(ser)) 然后我创建了列表<>我的对象并用我数据库中的数据填充

List<list2d> listz = new List<list2d>();
foreach (DataRow row in dt.Rows)
{
    listz.Add(new list2d(
        row["SOURCE"].ToString(), (DateTime)row["DATE"], (int)row["HOWMUCH"]));
}

所以现在我想按周(return_week(DATE))和分销渠道对这些数据进行分组并计算它。 至于我搜索stackoverflow似乎linq是正确的“工具”。不幸的是,我不熟悉这个功能,但大多数示例都基于int或字符串列表。在我的例子中,它是对象列表。

1 个答案:

答案 0 :(得分:0)

可以使用以下Linq查询

完成
lst
   .GroupBy(x => GetWeek(x.Dat))
   .Select(x => new KeyValuePair<DayOfWeek, int>(x.Key, x.Count()))
   .ToList();

int GetWeek() { ... }

这将为您提供keyvaluepairs列表,其中键是星期,值是给定日期的计数。

编辑:

刚刚意识到问题是在一周内分组,而不是一周中的那一天。