【发布时间】:2016-11-25 01:24:22
【问题描述】:
也许这是一个重复的线程,但我会尝试,因为有一个微小的差异。
我正在尝试构建一个动态表达式来过滤集合属性。
代码:
public class TestEntity
{
public int ID { get; set; }
public string Name { get; set; }
public IEnumerable<string> Values { get; set; }
}
public class TestFilter
{
public TestFilter()
{
var itens = new List<TestEntity>();
itens.Add(new TestEntity { ID = 1, Name = "Test1", Values = new List<string> { "V1", "V2" } });
itens.Add(new TestEntity { ID = 2, Name = "Test2", Values = new List<string> { "V6", "V3" } });
itens.Add(new TestEntity { ID = 3, Name = "Test3", Values = new List<string> { "V4", "V5" } });
itens.Add(new TestEntity { ID = 4, Name = "Test4", Values = new List<string> { "V2", "V3" } });
itens = itens.Where(e => e.Values.Any(c => c.Equals("V2"))).ToList();
**//Result IDs: 1, 4**
}
}
上面的过滤器会给我 ID 1 和 4 作为结果。
我想过滤集合“Values”中存在某个值的实体。
到目前为止,我已经尝试过this线程,但没有意识到它是如何做到的。
我们将不胜感激。
【问题讨论】:
-
所以你想让
c=> c.Equals("V2")中的表达式动态化对吧? -
我想制作 e => e.Values.Any(c => c.Equals("V2"))。谢谢!
-
您对结果的期望是什么?
-
请提供您要查找的方法签名(参数、返回类型)。
-
Ivan,我想构建一个像这样的动态表达式:e => e.Values.Any(c => c.Equals("V2"))。为了更好地理解,这里是小提琴的例子:dotnetfiddle.net/wgETgq
标签: c# entity-framework lambda filtering