簡體   English   中英

動態使用查詢語法創建LINQ查詢表達式的方法有哪些?

[英]What are the ways to create the LINQ query expression using query syntax dynamically?

動態但使用查詢語法創建LINQ表達式的可能方法是什么? 查詢語法是否僅是C#,如果是,那么使用Roslyn動態編譯創建此類表達式的唯一可行方法是嗎?

手動編寫LINQ表達式時,使用方法鏈接語法編寫時會發現它們更自然,例如ctx.Foo.Where(foo => foo.Type.Name == "Bar")但是在某些情況下,我需要像這樣寫它們:

from foo in ctx.Foo
join fooType in ctx.Types on foo.TypeId equals fooType.Id
where fooType.Name == "Bar"

我喜歡表達式樹如何在動態創建表達式時確保類型安全,但是如何使用查詢語法創建表達式?

感謝大家的意見。 事實證明,這樣做是不可能的,因為查詢語法只是C#語言的語法糖。

此外,如果其他人偶然發現了這個問題,請查看@Gert提供的出色答案: https ://stackoverflow.com/a/15599143/828023

這個問題的答案解釋說,查詢語法是“糖”,而方法的語法顯示真正的推移引擎蓋,其中,例如下join x in y on z equals x.something into somethingElse實際上是一種GroupJoin方法調用並沒有用表達式樹表達這種方式而無需實際調用GroupJoin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM