在sql server中,我有两个表(比如Person和School)。我想从一个表和School.Name返回Person.Name(因为它们是相关的,我也想要Person的主键)。
所以这里的问题是我可以返回这些数据并将它们全部列入清单吗?对于返回类型,它是否要求我为它创建一个自定义类型(我的意思是类)?
编辑:抱歉,我忘了在LINQ中需要它。
谢谢,
答案 0 :(得分:2)
也许有更好的方法可以做到这一点,但我会创建一个新类并返回这些对象的列表。像这样:
首先进行LiNQ查询以获取我们需要的值:
var personWithSchoolName = select p from db.Person
select s from db.School
where p.SchoolId == s.SchoolId
select new { p.PersonId as PersonId, p.Name as PersonName, s.Name as SchoolName };
peopleWithSchoolNamesList = personWithSchoolName.ToList();
然后遍历结果并将其添加到新列表中:
foreach(object o in peopleWithSchoolNamesList)
{
PersonWithSchoolNameObject personWithSchoolNameObject = new PersonWithSchoolNameObject(o.PersonId, o.PersonName, o.SchoolName);
ListWithPeople.Add(PersonWithSchoolNameObject);
}
return ListWithPeople;
答案 1 :(得分:0)
您可以使用LINQ的Join操作来组合来自多个表的数据
出于返回目的,您将需要一个Concrete类。您不能直接返回LINQ查询的结果,即匿名类型。
答案 2 :(得分:0)
试试这个
SELECT Person.Id, Person.Name, School.Name AS SchoolName
from Person
LEFT JOIN School ON Person.SchoolId = School.Id
(实际上你必须使用精心准备的linq来归还它,是吗?)
并将结果包装到特殊的预定义类中,如:
class PersonWithSchool
{
public int PersonId;
public string PersonName;
public string SchoolName;
}