【问题标题】:Help with Linq to SQL; return one result from one to many relationship帮助 Linq to SQL;从一对多关系返回一个结果
【发布时间】:2009-11-23 17:37:33
【问题描述】:

我正在尝试返回一个结果列表,其中连接的表有多个值,但我只希望每个列表值都有一个图像值。

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)

我的存储库类如下所示:(db.GetListings() 是我添加到 .dbml 文件的方法部分的存储过程方法)

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。

提前致谢,如果难以阅读,敬请见谅。

【问题讨论】:

  • 这里有一个SQL错误...h的别名是什么?
  • 你能发布你用来调用这个 SP 的 Linq to SQL 代码吗?
  • 你的权利应该是 l.id 我在窗口中输入错误。

标签: linq-to-sql


【解决方案1】:

您是否正在尝试做类似的事情:

 var result = (stored proc).Single() 

 var result = (stored proc).SingleOrDefault() 

??如果确实有多个元素返回,这将中断 - 改为使用 .First().FirstOrDefault() 方法:

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

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

马克

【讨论】:

  • 我正在尝试返回多行,但图像表中只有一行。我只需要 WHERE 子句。
猜你喜欢
  • 2012-10-07
  • 2023-04-05
  • 2020-10-14
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多