我需要返回类似于这个dynamiccaly的东西,它将来可能不仅仅有大小或类型,例如:
Where((x => x.Sizes == "Small" || x => x.Sizes == "Medium" || x => x.Sizes == "Big") &&
(x => x.Types == "normal" || x => x.Types == "extra" || x => x.Types == "Spicy"))
从我的尺寸和类型列表:
List<string> Sizes { "Small", "Medium", "Big", ...}
List<string> Types { "Normal", "Extra", "Spicy", ...}
这些列表可能会更大,稍后可能会添加其他列表。
我有我的参数,我想从我的网址过滤,像这个?types=normal,extra&sizes=big,small
。types
和sizes
是string
,所以我只是把它们和.Split(',');
分开,这样我就得到了string[] sizes
和string[] types
这两个数组是动态大小的,可能有0个甚至50个字符串。我想返回与我创建的数组中的大小匹配的所有大小。
因此,我们回到了起点,但我必须使用这两个(或更多(数组并对它们进行迭代。
database.table.Where(
(x => x.Sizes == sizes[0] || x => x.Sizes == sizes[1] || so on ...)
&&
(x => x.Types == types[0]|| x => x.Types == types[1] || so on...))
var sizes = new List<string>() {"Small", "Medium", "Large"};
var filteredList = listFromWebRequest.Where(x => sizes.Contains(x));
编辑:下面的实现将是完全动态的——filters
列表现在可以保存在其他地方,并使其成为静态的。
var queryParameters = new List<string>() {"Nike", "Tree", "Large"};
var sizes = new List<string>() {"Small", "Medium", "Large"};
var brands = new List<string>() {"Adidas", "Nike", "Puma"};
var filters = new List<List<string>>() {sizes, brands};
var filteredList = queryParameters.Where(x => filters.Any(y => y.Contains(x)));
database.table.Where(e=>sizes.Contains(e.sizes((