Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何访问LINQ模型中的特定行?_C#_Asp.net Mvc_Linq - Fatal编程技术网

C# 如何访问LINQ模型中的特定行?

C# 如何访问LINQ模型中的特定行?,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我目前有一个linq查询,可以从我的products表中选择5个随机行。在模型中拥有集合后,如何访问特定行?我使用First()获取第一行数据,但我不确定如果我想从该查询的第三行获取数据,我会使用什么 谢谢 var Model = (from r in DB.Products select r).OrderBy(r => Guid.NewGuid()).Take(5); var ProductID1 = Model.First().ProductID; var ProductID3 =

我目前有一个linq查询,可以从我的products表中选择5个随机行。在模型中拥有集合后,如何访问特定行?我使用First()获取第一行数据,但我不确定如果我想从该查询的第三行获取数据,我会使用什么

谢谢

var Model = (from r in DB.Products select r).OrderBy(r => Guid.NewGuid()).Take(5);

var ProductID1 = Model.First().ProductID;
var ProductID3 = Model.???

您可以简单地迭代结果集合,并获取所需的第n个索引

Product product = null;
int index = 0;

foreach (Product p in DB.Products)
{
    if (index == 3)
    {
        product = p;
        break;
    }

    index++;
}
var模型=(从DB.Products中的r选择r)
.OrderBy(r=>Guid.NewGuid())
采取(5)ToArray();
var ProductID1=Model.First().ProductID;

var ProductID3=Model.Skip(2).First()您应该只运行一次查询,然后使用foreach对行进行迭代,或者只使用index属性选择适当的产品

var Model = (from r in DB.Products select r).OrderBy(r => Guid.NewGuid()).Take(5).ToList();

var ProductID1 = Model[0].ProductID;
var ProductID2 = Model[1].ProductID;

如果将查询处理为列表,则可以通过索引直接访问每个元素:

var Model = (from r in DB.Products select r)
    .OrderBy(r => Guid.NewGuid())
    .Take(5)
    .ToList(); //Process into a list

var ProductID1 = Model[0].ProductID;
var ProductID3 = Model[3].ProductID;
...
var ProductID100 = Model[100].ProductID;

小心;由于查询是重新计算的,您可能会得到与
Model.First()
相同的值。一旦有了数组/列表,您就应该通过索引来访问项目,而不是使用
Skip
。如果你真的非常反对,至少使用
ElementAt
。这就是我想要的。谢谢
var Model = (from r in DB.Products select r)
    .OrderBy(r => Guid.NewGuid())
    .Take(5)
    .ToList(); //Process into a list

var ProductID1 = Model[0].ProductID;
var ProductID3 = Model[3].ProductID;
...
var ProductID100 = Model[100].ProductID;