我只是不明白在linq查询中编写AsEnumerable()的含义。
我有一个UserDetail表,我在其中获取用户的所有详细信息,我想采取 姓名,发邮件到我的模特。
var data = context.UserDetails
.Select(temp => new FullName = temp.Fullname, Email = temp.Email })
.ToList()
.AsEnumerable()
.Select(d => new UserDetailsModel { Fullname = d.FullName, Email = d.Email })
.ToList();
AsEnumerable()的含义是什么,因为当我删除它时没有错误,但我已经看到他们使用这种方法的一些查询。
有没有人有更好的方法将匿名对象值带入我的View模型?
它是否提高了性能?这种方法有什么意义?任何人都可以根据我的问题和细节向我解释这个方法吗?
答案 0 :(得分:0)
您的第一个select
正在查询数据库并返回IQueryable<T>
。 .AsEnumerable()
将其设为IEnumerable<T>
。 IQueryable<T>
扩展IEnumerable<T>
,无论您使用IEnumerable<T>
做什么,您都可以使用IQueryable<T>
您经常使用.AsEnumerable()
来实现查询,以便可以对结果集执行其他非sql语句as per this example
您可以将代码简化为
var data = (from temp in context.UserDetails select temp)
.Select(d => new UserDetailsModel
{
Fullname = d.fullName,
Email = d.Email
}).ToList()); // or AsEnumerable()
答案 1 :(得分:0)
ToList()
或AsEnumerable()
的工作方式相似,您不需要两者。 List
是IEnumerable
+一些附加功能,例如Add(),Count等,使用其中任何一个的想法都是为了实现查询(IQueryable
)。
此外,您不需要 temp 查询,可以直接选择:
var data = context.UserDetails
.Select(d => new UserDetailsModel {...})
.ToList()); // or AsEnumerable()