使用LINQ查詢時,可能需要根據使用者輸入動態產生WHERE子句。這可以透過將多個WHERE子句連結在一起實現,如下例所示:
GetProductList()
方法接受一個字典作為參數,該字典表示一組篩選條件。然後,使用where子句建構LINQ查詢,根據字典中的條件篩選結果。
每個where子句都透過檢查字典中是否存在對應的鍵來加入到查詢中。如果存在,則根據與該鍵關聯的值篩選查詢。
以下程式碼範例示範如何實作此方法:
<code class="language-csharp">public IOrderedQueryable<productdetail> GetProductList(string productGroupName, string productTypeName, Dictionary<string, List<string>> filterDictionary) { var q = from c in db.ProductDetail where c.ProductGroupName == productGroupName && c.ProductTypeName == productTypeName select c; //添加select c;避免编译错误 foreach (var filter in filterDictionary) { var fieldName = filter.Key; var values = filter.Value; if (values.Count > 0) { q = q.Where(c => values.Contains(c.GetType().GetProperty(fieldName).GetValue(c, null)?.ToString())); } } return q.OrderBy(c => c.ProductTypeName); }</code>
透過根據使用者輸入動態產生WHERE子句,您可以建立針對特定搜尋條件的LINQ查詢。這種方法提供了靈活性,並允許根據使用者定義的參數輕鬆過濾資料。 請注意,此程式碼假設filterDictionary
的value為List<string>
,且ProductDetail
物件的屬性名稱與filterDictionary
的鍵名一致。 為了更穩健的處理,建議新增異常處理和屬性名校驗。
以上是如何在 LINQ 中建立動態 WHERE 子句以實現靈活的資料過濾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!