1
我有這樣的方法動態的LINQ包含過濾列表
public static IEnumerable<T> Filter<T>(IEnumerable<T> source, string searchStr)
{
var propsToCheck = typeof(T).GetProperties().Where(a => a.PropertyType == typeof(string));
var filter = propsToCheck.Aggregate(string.Empty, (s, p) => (s == string.Empty ? string.Empty : string.Format("{0} OR ", s)) + string.Format("{0} == @0", p.Name).ToLower());
var filtered = source.AsQueryable().Where(filter, searchStr);
return filtered;
}
這需要列表和搜索字符串,然後在列表中找到任何匹配。然而,這隻適用於100%的匹配,我如何使這種情況下不敏感,並使用包含而不是100%的匹配?
因此,基本上你只需要過濾那些包含給定字符串的字符串? – pvgoran
不,讓我說我通過一個物品清單,一個屬性是國家,有價值澳大利亞和奧地利。所以當我用搜索字符串發送方法時,「Aus」返回列表中的兩個國家的列表。它是在列表內搜索,遍歷所有字段並返回任何屬性包含給定字符串的對象。此外,我需要它不區分大小寫 – w2olves
它應該適用於任何類型的對象? (順便說一下,你不能在泛型函數中使用typeof(T),或者你的問題的代碼實際上是這樣工作的?) – pvgoran