我剛問過this question。這導致我一個新的問題:)Linq to SQL:.FirstOrDefault()不適用於選擇新{...}
直到這一點,我已經使用了以下模式選擇LINQ to SQL的東西,目的是能夠處理0查詢返回的「行」:
var person = (from p in [DataContextObject].Persons
where p.PersonsID == 1
select new p).FirstOrDefault();
if (person == null)
{
// handle 0 "rows" returned.
}
但我不能用FirstOrDefault()
當我這樣做:
var person = from p in [DataContextObject].Persons
where p.PersonsID == 1
select new { p.PersonsID, p.PersonsAdress, p.PersonsZipcode };
// Under the hood, this pattern generates a query which selects specific
// columns which will be faster than selecting all columns as the above
// snippet of code does. This results in a performance-boost on large tables.
如何檢查查詢返回0「行」,使用第二圖案?
UPDATE:
我想是因爲我想指定查詢變量(this._user
)的結果,我的生成失敗宣佈與[DataContext].User
類型。
this._user = (from u in [DataContextObject].Users
where u.UsersID == [Int32]
select new { u.UsersID }).FirstOrDefault();
編譯錯誤:無法隱式轉換類型 「AnonymousType#1」 至 「[DataContext的]。用戶」。
有關如何解決此問題的任何想法?我需要製作自己的對象嗎?
同意,上述應該工作,除非有一個不相關的運行時錯誤。 – Codewerks 2008-10-14 16:25:58