任何和包含的Linq表达式

时间:2020-04-01 02:45:50

标签: c# .net linq linq-expressions

我必须将下面的linq查询更改为linq中的动态表达式,但是我遇到了AnyContains方法的问题。

List<string> set1 = new List<string> {"100", "400"};
List<MyObj> set2 = new List<MyObj>();
set2.Add(new MyObj() {name="a", code="100"});
set2.Add(new MyObj() {name="b", code="200"});
set2.Add(new MyObj() {name="c", code="300"});
set2.Add(new MyObj() {name="d", code="400"});

示例查询

var test1in2 = set2.Where(t2 => set1.Any(t1 => t2.code.Contains(t1)));

//Return value
{name="a", code="100"} and {name="d", code="400"}

如何将此查询更改为动态表达式?

1 个答案:

答案 0 :(得分:0)

我个人从不使用动态查询语法,但是如果必须的话,以下应该起作用:

var queryResult = 
    from s2 in set2
    join s1 in set1 on s2.code equals s1        
    select s2;

为完整起见,也可以用以下表达式重写:而不使用速度较慢的containsany运算符:

var expressionResult = set2
    .Join(set1, s2 => s2.code, s1 => s1, (s2, s1) => s2);
相关问题