如何操纵linq的结果

本文关键字:linq 结果 操纵 何操纵 | 更新日期: 2023-09-27 18:14:44

我有一个年份的下拉列表,问题是我想检查列表中最近的年份并添加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();

提前感谢大家!

如何操纵linq的结果

我假设你在b+=行上得到一个错误,因为Distinct()函数将返回一个IEnumerable对象。注意,你试图在那一行给b赋值一个整数,但在同一行你调用了b. first(),这显然是你不能用整数做的。

看起来你真正想要的是

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

然而,这也行不通。你必须这样做:

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

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

编辑:在发现Year实际上是int之后,我调整了上面的代码块。同样,他的原始代码中的"select new {a.Year}"应该只是"select a.Year"。