gpt4 book ai didi

c# - 我真的需要在集合上使用 AsQueryable() 吗?

转载 作者:可可西里 更新时间:2023-11-01 08:09:45 24 4
gpt4 key购买 nike

示例代码:

List<Student> Students = new List<Student>()   
{
new Student(101, "Hugo", "Garcia", new List<int>() { 91, 88, 76, 93 }),
new Student(102, "Rick", "Adams", new List<int>() { 70, 73, 66, 90 }),
new Student(103, "Michael", "Tucker", new List<int>() { 73, 80, 75, 88 }),
new Student(104, "Fadi", "Fakhouri", new List<int>() { 82, 75, 66, 84 }),
new Student(105, "Peter", "Barrows", new List<int>() { 67, 78, 70, 82 })
};

var query = from student in Students
where student.Marks.AsQueryable().All(m => m > 70)
select student;

foreach (Student student in query)
{
Console.WriteLine("{0} {1}<br />", student.FirstName, student.LastName);
}

但是如果我将查询更改为

var query = from student in Students
where student.Marks.All(m => m > 70)
select student;

这也有效并产生相同的结果,那有什么区别呢?

最佳答案

对于来自远程源(例如来自数据库)的对象,需要/推荐使用 IQueryable。

对于内存集合,它是没有用的。

AsQueryable用于构建表达式树。

我能想到最适合的场景。在您的示例中,假设您需要基于学生 ID 的数据库中的一些信息。

现在student在 memset 合中。您需要根据学生 ID 触发数据库查询。

  var studentList = Students.Select(s => s.Id).AsQueryAble().Select(i => remoteDBProvider.GetInfo(i));

对studentList的任何进一步操作都将从IQueryAble接口(interface)(查询表达式)调用,并且只会从数据源中获取那些记录,这些记录应该作为最终查询结果返回(只要是数据源,返回值为remoteDBProvider.GetInfo in该示例支持 QueryProvider )。

关于c# - 我真的需要在集合上使用 AsQueryable() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com