LINQ with non-lambda for Any Contains 使用非lambda表达式的LINQ的Any方法和Contains方法。

15 浏览
0 Comments

LINQ with non-lambda for Any Contains 使用非lambda表达式的LINQ的Any方法和Contains方法。

如何使用非lambda表达式进行以下操作的Linq(无法正常工作):

string[] words = { "believe", "relief", "receipt", "field" }; 
var wd = (from word in words
          select word).Any(Contains ("believe"));

如何使用非lambda表达式在上述代码中进行Linq操作(这段代码无法正常工作)?

0
0 Comments

LINQ with non-lambda for Any Contains

在这段代码中,我们可以看到有一个问题:如何使用非lambda表达式进行Any Contains操作。下面将介绍问题的原因以及解决方法。

首先,代码中使用了from wor in words select wor这段代码,但是这段代码并没有起到任何作用,不清楚它的用途。其次,代码中提到不想使用lambda表达式,但是没有说明为什么不想使用。解决这个问题的明显方法是使用lambda表达式进行操作:

bool hasBelieve = words.Any(x => x.Contains("believe"));

需要注意的是,这段代码并不是检查列表中是否有单词"believe",而是检查列表中是否有任何一个包含"believe"的单词。所以,"believer"也是可以的。如果只想检查列表中是否包含believe,可以使用以下代码:

bool hasBelieve = words.Contains("believe");

如果真的不想使用lambda表达式,可以通过自定义一个类来模拟lambda表达式的工作。具体做法如下:

public class ContainsPredicate
{
    private readonly string target;
    public ContainsPredicate(string target)
    {
        this.target = target;
    }
    public bool Apply(string input)
    {
        return input.Contains(target);
    }
}

然后可以使用以下代码:

Func<string, bool> predicate = new ContainsPredicate("believe");
bool hasBelieve = words.Any(predicate);

当然,这并不是一个好的解决方法。

当然,也可以使用以下代码:

var allBelieve = from word in words
                 where word.Contains("believe")
                 select word;
bool hasBelieve = allBelieve.Any();

但是这种方式比较丑陋,个人建议还是使用lambda表达式。

感谢Jon的回答,如果你想了解如何使用非lambda表达式,可以参考上述解决方法。同时,也希望能够清楚你对于"non-lambda"的具体理解是什么。

0
0 Comments

在上述代码中,使用了LINQ查询语句来筛选出数组中包含特定字符串的元素。具体来说,代码中使用了"Contains"方法来判断字符串是否包含特定子字符串。

然而,使用这种非Lambda表达式的方式来实现这个功能存在一些问题。首先,这种写法相对繁琐,需要编写更多的代码来实现同样的功能。其次,这种写法可能会导致性能问题,因为"Contains"方法在每个元素上都会执行一次,而不是在整个集合上执行一次。

为了解决这个问题,可以使用Lambda表达式来简化代码并提高性能。下面是使用Lambda表达式重写的代码:

string[] words = { "believe", "relief", "receipt", "field" };
var wd = words.Where(wor => wor.Contains("believe"));

通过使用Lambda表达式,我们可以直接在查询语句中编写条件,而不需要单独使用"where"子句。另外,使用Lambda表达式还可以提高性能,因为它只会在整个集合上执行一次条件判断。

总结起来,使用非Lambda表达式的方式来实现"Any Contains"的功能可能会导致代码繁琐且性能较低。为了解决这个问题,可以使用Lambda表达式来简化代码并提高性能。

0