C# 如何继续使用LINQ查询
我有一个linq查询:C# 如何继续使用LINQ查询,c#,sql-server,asp.net-mvc,entity-framework,linq,C#,Sql Server,Asp.net Mvc,Entity Framework,Linq,我有一个linq查询: var list = (from x in db.students where x.name== student_name select new { x.date, x.Student_id
var list = (from x in db.students
where x.name== student_name
select new
{
x.date,
x.Student_id
}
我现在还不想执行.toList()
查询,我想在稍后阶段选择学生的更多属性,例如:
x.student_age
x.student_name
在稍后的阶段
例如,添加到var列表:
var list = (from x in db.students
where x.name== student_name
select new
{
x.date,
x.Student_id
x.student_age
x.student_name
}.toList();
我该怎么做呢 您以错误的方式处理问题。如果不知道要选择对象的哪些属性,为什么要选择子集
var list = (from x in db.students
where x.name== student_name
select x);
此时,您尚未实现查询。它仍然是一个IQueryable
。
现在,当您知道需要哪些属性时,仍然可以选择匿名对象,或者最好选择ViewModel类:
list = list.Select(x => new StudentViewModel {
Id = x.Id,
Name = x.Name,
/* ....*/
});
如果要使用匿名对象,只需执行以下操作:
list = list.Select(x => new {
Id = x.Id,
Name = x.Name,
/* ....*/
});
现在,当您调用
list.ToList()
时,它被具体化并执行查询。您的IQueryable
成为IEnumerable
如果您的查询仍然是延迟查询,我认为您可以在稍后阶段执行select查询
var list = from x in db.students
where x.name == student_name
然后在下一阶段:
var list1 = from x in list
select new
{
x.date,
x.student_id
x.student_age
x.student_name
}
无法理解你的问题。请将其重新表述以便于理解。您应该定义希望在稍后阶段选择更多的内容。
。toList()
将显示所有字段。你想要选择你想要的字段吗?更多什么?一个学生的更多属性还是更多学生的更多属性?@Marco一个学生的更多属性美丽,我将测试这个,非常感谢!不要忘记声明ViewModel类,否则您将遇到另一个编译时错误;)这将无法编译。查询语法要求您有一个select语句。很抱歉,我弄错了,您可以在第一个查询中添加select x。