帮助Linq to SQL;从一对多的关系中返回一个结果

时间:2009-11-23 17:37:34

标签: linq-to-sql

我正在尝试返回结果列表,其中连接表具有多个值,但我只想为每个列表值设置一个图像值。

SQL是这样的:

SELECT
    Title, Comments, ThumbNailPath, thumbheight, thumbwidth
FROM  
      Listings as l INNER JOIN
      Images as i ON l.id = i.ListingId
WHERE
    (i.ImageSlot = 1)

我的repository类看起来像这样:(db.GetListings()是我添加到.dbml文件的methods部分的存储过程方法)

private ListingModelDataContext  db = new ListingModelDataContext();

public IQueryable FindAllListings()
    {
       //return  all listings and first associated thumbnail
        return db.GetListings();                   
    }

当我尝试从存储过程调用时,我收到错误

  

'System.Data.Linq.ISingleResult'到'System.Linq.IQueryable'。一个   存在显式转换(是吗?   错过演员?)

我正在寻找关于如何从存储过程调用sql语句或者简单地构造linq以返回该值的指导。

我的首选是知道如何编写LINQ语句。为了澄清,我在图像表上有一对多的关系。 (每个列表多个图像)我只想在搜索结果页面上返回第一个图像。因此,对于每个列表返回图像值,其中imageSlot = 1。

我应该得到一个行列表,显示连接到图像值的列表值。我在SQL中得到了正确的结果,但不知道如何在linq中编写它或如何正确调用sproc。

如果这很难理解,请提前致谢。

1 个答案:

答案 0 :(得分:0)

你是否想要这样做:

 var result = (stored proc).Single() 

 var result = (stored proc).SingleOrDefault() 

??如果确实有多个元素返回,则会中断 - 而是使用.First().FirstOrDefault()方法:

var result = (stored proc).FirstOfDefault();

返回存储过程中的第一个条目,如果存储的proc根本没有返回任何值,则返回null

马克