我正在尝试返回结果列表,其中连接表具有多个值,但我只想为每个列表值设置一个图像值。
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。
如果这很难理解,请提前致谢。
答案 0 :(得分:0)
你是否想要这样做:
var result = (stored proc).Single()
或
var result = (stored proc).SingleOrDefault()
??如果确实有多个元素返回,则会中断 - 而是使用.First()
或.FirstOrDefault()
方法:
var result = (stored proc).FirstOfDefault();
返回存储过程中的第一个条目,如果存储的proc根本没有返回任何值,则返回null
。
马克