簡體   English   中英

動態引用 IQueryable 中的實體框架列<t></t>

[英]Dynamically refer to Entity Framework columns in IQueryable<T>

我知道一些類似的問題在堆棧溢出中徘徊,但是盡管它們似乎都沒有按照我想要的方式工作。 這是我想要實現的想法:

// arrays vary depends what's in bigger loop
string[] columnNames = {"id", "name", "surname", "address", "phone"} 

// ...

foreach (string columnName in columnNames)
{
    if (condition)
    {
        IQueryable<tableType> query = from x in dbContext where x.(**columnName**).contains(otherVariable) select x;
    }
    // ...
    // Another queries wrapped in if conditions
}

我已經用我在這里找到的 typeof() 和 Type.GetProperty() 進行了嘗試,它似乎沒有任何工作。 另一件事是我希望這盡可能符合當前最佳實踐的標准,如果我正在尋找錯誤的方向,那么我應該指向哪里? 我需要讓這種方法可重用於數以百計的視圖和表。

干杯,

您應該存儲表達式,而不是在數組中存儲字符串。

Expression<Func<TableType, bool>>[] conditions = new {
    x => x.ID > 5,
    x => x.Name > "M" };

等比你可以查詢

var query = dbContext.YourTable.Where(conditions[1])

這比使用反射或動態或其他任何東西更簡單易讀。

您也可以通過多個 where 子句組合多個條件。

由於您的示例暗示了 where 子句,因此我不得不在這里發明一些 boolean 表達式。

只是不要從存儲字符串開始(除非這些字符串是由用戶輸入的)

我必須通過@Aleks Andreev回答的另一篇文章的鏈接來回答我的問題

LINQ where 條件與動態列

這正是我一直在尋找的。

暫無
暫無

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

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