我正在嘗試創(chuàng)建一個擴展方法,該方法可用于 LINQ-to-Object 和 LINQ-to-Entities 以創(chuàng)建功能Where查詢。最終會涉及更多內(nèi)容,但一開始我遇到了一個問題,只是讓方法接受 lambda 列選擇并將其用作Contains()調(diào)用的基礎(chǔ)。我已經(jīng)能夠為 LINQ-to-Objects 做一些工作,但是當(dāng)我嘗試將它用于 LINQ-to-Entities 時,它有一個問題。以下是適用于 LINQ-to-Objects 的方法:public static IQueryable<T> WhereContains<T>(this IQueryable<T> query, Expression<Func<T, string>> column, IList<string> values){ return query.Where(o => values.Contains(column.Compile().Invoke(o)));}如果這是針對實體框架運行的,我會收到一個異常說明LINQ to Entities 無法識別該方法...我有一種感覺,這將需要使用ExpressionVisitor,但我一直無法弄清楚它需要如何連接。有沒有人能夠做到這一點?更新:我認(rèn)為這不是重復(fù)的,因為 xanatos 提供的答案顯示了一種無需使用 ExpressionVisitor 即可完成此任務(wù)的直接方法。
- 1 回答
- 0 關(guān)注
- 209 瀏覽
添加回答
舉報
0/150
提交
取消