0
假如我有這個疑問:Refractoring Linq中的嵌套查詢到實體框架
var ps = from p in dc.Products
let text =
(from t in p.Text
orderby t.Language == "ja" descending
select t).FirstOrDefault()
select new { p.Id, text.Name };
有什麼辦法來折射被分配到text
查詢?
我的猜測是我需要使它成爲Expression<Func<Product, string, ProductText>>
,但我不知道如何調用它。順便說一下,如果有更有效的方法來做到這一點,我很樂意知道。
感謝,
川
編輯:爲了澄清,該想法是,如果日本無法使用,我希望它依傍任何其他語言可用。
也許這樣更有效率?
let text = p.Text.FirstOrDefault(t => t.Language == "ja") ?? p.Text.FirstOrDefault()
無論哪種方式,我的主要問題是關於我會如何做text
查詢可重複使用的 - 因爲它是相當直觀,我能想象自己或別人這樣做是錯誤的未來。
不完全是,因爲我希望它依傍任何一種語言,是可用的。另外,我可能會想要的不僅僅是'名字' - 因此'let'。 – 2010-11-04 05:58:57
有道理,雖然我懷疑你真的想回到特定的語言,而不是一些隨機的?那編輯後的版本呢?儘管現在它與你開始的東西幾乎完全相同。 – 2010-11-04 06:08:50
嗯是的,這看起來非常接近我的第一個。我猜測執行的查詢幾乎是一樣的。回到某種特定的語言會很好(可能是英語),但如果我以第三種語言結束,我可能會擔心它。應該能夠添加一個'然後通過fallbackPriority'或者沿着這些線。現在我只擔心日語和英語。 – 2010-11-04 06:17:29