2009-11-23 36 views
1

我想返回結果列表,其中連接的表有多個值,但我只想要每個列表值的一個圖像值。幫助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) 

我的倉庫類看起來是這樣的:(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。

非常感謝,如果難以閱讀,請多加諒解。

+0

這裏有一個SQL錯誤...什麼是別名h? – 2009-11-23 17:41:26

+1

你可以發佈Linq到你用來調用這個SP的SQL代碼嗎? – ristonj 2009-11-23 17:42:11

+0

你的權利應該是l.id我在窗口中輸入錯了。 – Andrew 2009-11-23 18:02:18

回答

0

你試圖做soemthing,如:

var result = (stored proc).Single() 

var result = (stored proc).SingleOrDefault() 

?如果有確實回來了多種元素,這將打破 - 改用.First().FirstOrDefault()方法:

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

返回從存儲過程中的第一項,或者null如果存儲過程返回根本沒有值。

Marc

+0

我試圖返回多行,但只有一行出圖像表。我只需要一個WHERE子句。 – Andrew 2009-11-23 18:03:20