通过LINQ结果列表进行迭代

时间:2014-01-08 15:41:08

标签: c# linq linq-to-sql

我想查询数据库并获取一个类别列表(我正在使用Linq查询语法)。然后遍历该类别列表以在我的C#代码中使用。这似乎应该相对容易,但到目前为止,我只是找到在视图中显示结果的示例。如何在代码中使用结果?

3 个答案:

答案 0 :(得分:13)

您只需使用foreach

即可
foreach(var category in categories)
{
    // do something with it
}

如果您希望将其保留在内存中的集合中以通过索引访问它,您可以通过Enumerable.ToArrayEnumerable.ToList创建数组或列表,例如:

List<Category> categoryList = categories.ToList();

现在你也可以修改它。

categoryList[index] = otherCategory;

或者您可以使用for - 循环代替:

for(int index = 0; index < categoryList.Count; index++)
{
    Category cat = categoryList[index];
    //do something
}

答案 1 :(得分:3)

您还可以在Linq查询中添加代码。例如:

var numbs = new int[] { 1, 2, 3, 4, 5, 6 };

numbs.Select(i => {

    SomeMethod(i);
    return i;

});

然后,您还可以选择新结果或修改结果并将其存储到现有数组中。例如

var numbs = new int[] { 1, 2, 3, 4, 5, 6 };

var multList = numbs.Select(i => {

    var mult = MultiplyBy2(i);
    Console.Write("New Number: " + mult);
    return mult;
});

答案 2 :(得分:2)

只是为了添加另一种选择,你也可以使用for循环:

for(int i = 0; i < categories.Count(); i++)
{
  var thisElement = categories.ElementAt(i);
}

虽然循环的可读性稍差但通常要快得多(尽管它主要取决于IEnumerable的基础类型)。