在lambda表达式中使用类型参数作为过滤器

时间:2019-02-22 19:34:22

标签: c# lambda types parameters generic-programming

我尝试按类型过滤列表的元素-但类型是通过参数提供的。

这只是一个简单的示例,但我认为它可以解释我正在尝试做的事情:

var list = new List<object>(){"String 1", "String 2", 42, 88, 4.6, Guid.NewGuid(), "String 3"};
Type filterType = typeof(string);

var filteredList1 = list.Where(e => e is string);

var filteredList2 = list.Where(e => e.GetType() == filterType);
var filteredList3 = list.Where(e => e is filterType);

第一个结果列表将按预期包含三个元素。 但是第二和第三列表将只返回任何元素。

在实际的应用程序中,我使用的是带有多个记录类型(类)的DbSet的实体框架,并且filterType通过返回类型为TYPE的结果的方法来设置。

有什么方法可以构建表达式来过滤记录列表,以仅获取指定类型的记录?

感谢和问候

马库斯

0 个答案:

没有答案