使用LINQ to SQL从单个记录中返回多个对象

时间:2011-05-01 08:40:50

标签: c# .net linq linq-to-sql

我有一个存储过程,它返回这样的记录(我简化了它)

SELECT 
    Id, FirstName, LastName, Father.FirstName, Father.LastName
FROM Profiles 
Left JOIN Profiles Father on Profiles.FatherId = Father.Id

我希望将此记录作为对象的2个属性返回

var result = dataContext.StoredProcedure();
Profile = result.Profile;
Father = result.Father;

我的问题是,我如何拍摄单曲

SELECT 
    Id, FirstName, LastName, Father.FirstName, Father.LastName

将它的一半分成一个属性/对象(Profile),另一半成为另一个属性/对象(父)

使用存储过程的原因 实际的sql语句包括一个全文搜索,linq不支持,所以我不能使用普通的linq查询。

2 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你需要两个强类型的对象,'Profile'和&来自SQL结果集的“父亲”。我看到两个选项可以做到这一点;

1>从存储过程中获取结果,并按如下所述创建对象;

Profile p = new Profile P { Id=result.Id, FirstName= result.FirstName, LastName=result.LastName}; 
//and similar code for creating the 'Father' object

2 - ;在存储过程中,首先在表变量中获取结果,然后从该表变量中选择两个结果,第一个是“Profile”,第二个是“Father”。调用存储过程的LINQ to SQL方法应设置为允许多个结果集。然后,您可以访问结果,如;

Profile = result.Profile;
Father = result.Father;

答案 1 :(得分:0)

  • 使用2个属性创建强类型对象:Profile,Father
  • 为Profile对象创建导航属性Father,因此接收Profile的消费者可以轻松导航到Father