[英]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.