Dot-Net

IEnumerable 上的動態 LINQ?

  • January 28, 2009

假設我需要使用動態查詢過濾通用列表(List<string> l; var x = l.Where(*dynamic query*)

我將如何使用 LINQ 執行此操作?(目前在數據視圖上使用行過濾器)

我看過scott g 的文章:但它似乎不適用於使用的對象IEnumerable(包括通用列表)

任何人都可以提供任何想法嗎?

假設您的意思是基於字元串的查詢:動態 LINQ 庫可以正常工作;只需.AsQueryable()先打電話:

string s = *dynamic query*
var qry = l.AsQueryable().Where(s);

這為您的IQueryable<T>列表提供了一個包裝器,它提供對動態 LINQ 擴展方法的訪問。

您可以使用採用謂詞的 FindAll() 方法。這是一個基本的例子。

List<string> stringList = new List<string>(new string[]{"Smith", "Johnson", "Jordan","Doe"});

List<string> filteredStringList = stringList.FindAll(x => x == "Smith");

Find 方法也返回單個項目。

MSDN 上還有一個範例項目,用於在 IEnumerable 和 IQueryable 上執行動態 LINQ 查詢。您可以從中重用 DynamicQueryable 類。這是連結。該項目位於 C# 範例項目中。

引用自:https://stackoverflow.com/questions/485895