LINQ查询增量

时间:2014-01-20 17:24:59

标签: c# asp.net linq linq-to-sql

你好我有以下代码返回我Listitem类型列表。我想为每个ListItem选项增加一个值。

public static List<System.Web.UI.WebControls.ListItem> GetMyCompassTUTListContent(List<int> ContentID, Int32 CountryID)
{
    int Counter = 0;
    List<System.Web.UI.WebControls.ListItem> litems = new List<System.Web.UI.WebControls.ListItem>();
    using (DbDataContext objContext = new DbDataContext())
    {
        if (CountryID == (int)MyCompassBLL.Constants.Country.Australia)
        {
            litems = objContext.Contents.Where(x => ContentID.Contains(x.ID)).Select(x => new System.Web.UI.WebControls.ListItem { Text = x.Text, y = (y + 1) }).ToList();
        }
        else
        {
            litems = objContext.ContentCountries.Where(x => ContentID.Contains(x.ContentID) && x.CountryID == CountryID).Select(x => new System.Web.UI.WebControls.ListItem { Text = x.Text, Value = (Counter + 1).ToString() }).ToList();
        }
    }
    return litems;
}

请帮帮我。我无法做到这一点,因为我无法找到如何在增量后将值重新分配给变量计数器的方法。

提前致谢

2 个答案:

答案 0 :(得分:6)

Select的重载也提供了当前项的索引。你可以用它。但是,大多数数据库查询提供程序都不支持它,因此您需要执行数据库查询,然后确保调用Enumerable的{​​{1}}重载来添加索引:

Select

答案 1 :(得分:-1)

使用++Counter代替( Counter + 1)

[UPDATE]

尝试增加你的计数器,然后将它放入Select():

else
    { 
        Counter++;
        litems = objContext.ContentCountries.Where(x => ContentID.Contains(x.ContentID) && x.CountryID == CountryID).Select(x => new System.Web.UI.WebControls.ListItem { Text = x.Text, Value = Counter.ToString() }).ToList();
    }