我需要一个对象列表,其属性将是列的名称。
这是我的方法:
var list = (from student in context.Student
join school in context.School
on student.idSchool equals school.idSchool
into allcolumns
from entry in allcolumns
select entry).ToList();
但列表恰好只是
School
的列表。我怎样才能实现我的目标?谢谢你。
Select Linq 表达式返回
IEnumerable<T>
T
可以是匿名类型。在你的情况下,如果你只想要某些列,你需要表达哪些列。
var mylist =
from student in context.Student
join school in context.School on student.idSchool equals school.idSchool
select new
{
student.idSchool, // if you want specific name - define >> SchoolId = student.idSchool
student.Property1,
student.Property2,
student.Property3,
school.Property1,
school.Property2,
school.Property3,
};
现在您已经有了匿名类型的 Enumerable,您可以随时根据需要调用
ToList/ToArray
。请记住,由于“延迟执行”的概念,请确保仅调用它一次并重用变量
我正在检查你的linq,我想你可以这样改变它:
var mylist = from student in context.Student
join school in context.School
on student.idSchool equals school.idSchool
select new
{
Stud = student,
Scho = school
};
变量列表将是 Enumerable T、匿名类型
您可以通过以下方式检查结果:
foreach(var item in mylist)
{
Console.Writeline($"{item.Stud.YourFieldName} | {item.Scho.YourFieldName}");
}