任何和包含的Linq表达式

问题描述 投票:0回答:1

我必须将下面的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"}

如何把这个查询改成动态表达式?

c# .net linq linq-expressions
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.