如何操纵linq的结果

时间:2011-11-14 03:02:01

标签: c# linq

我有一年的下拉列表,问题是我想检查列表中的最新年份并添加1 ..所以如果列表中的最新一年是2011年,我将手动添加1以显示2012年。 ..这是我的代码供你参考..

var b = (from a in sampleworker.getyear()
                 orderby a.Year
                 select new
                 {
                     a.Year
                 }
                 ).Distinct();

        b += int.Parse( (b.First()).ToString() ) + 1;
        drp_year.DataSource = b;
        drp_year.DataBind();

提前谢谢你们!

1 个答案:

答案 0 :(得分:4)

我假设你在b + =行上遇到错误,因为Distinct()函数将返回一个IEnumerable对象。请注意,您正在尝试在该行上为b分配一个整数,但是在您调用b.First()的同一行上,这显然是您无法对整数执行的操作。

看起来你真正想要的是

    b.Add(b.First() + 1);

但是,这也行不通。你必须这样做:

    var yearList = b.ToList();
    yearList.Add(b.First() + 1);

然后您可以将DataSource设置为该数据源。此外,什么数据类型是年?它显然不是一个字符串,因为你必须在它上面使用ToString()方法。我认为它不是一个整数,因为你在它上面使用了int.Parse()。这让我相信它可能是一个DateTime,如果是这样,为什么不使用DateTime对象上已经存在的方法来操作日期而不是在类型之间进行转换?

编辑:我在发现Year实际上是一个int之后调整了上面的代码块。此外,在他的原始代码中“选择新的{a.Year}”应该只是“选择a.Year”。有关详细信息,请参阅以下评论...