开放的编程资料库

当前位置:我爱分享网 > C#教程 > 正文

C# LINQ 在哪里

在本文中,我们展示了如何使用LINQ的Where方法和where子句在C#中过滤序列。

语言集成查询(LINQ)是一种特定领域的语言,用于从各种数据源(包括数组、列表、XML文件或数据库)查询数据。

where子句或Where方法根据谓词过滤值序列。谓词是一个返回布尔值的单参数函数。

此方法是惰性求值的。在枚举对象之前不执行查询。

C#LINQWhere简单示例

第一个示例是一个使用LINQSelect的简单程序。

var vals = new List<int> { -3, -1, 0, 3, 2, 1, -6, 5, 9 };
var res = vals.Where(e => e > 0);

Console.WriteLine(string.Join(',', res));

程序定义了一个整数列表。我们过滤掉所有正值。

var res = vals.Where(e => e > 0);

Where方法将给定的谓词函数应用于每个元素。它返回满足给定条件的一系列值。在我们的例子中,条件是值大于零。

$ dotnet run
3,2,1,5,9

C#LINQWherewithFunc谓词

Func是一个内置的通用委托类型。它可以与方法、匿名方法或lambda表达式一起使用。

Func<int, bool> isNeg = (e) => e < 0;

var vals = new List<int> { -3, -1, 0, 3, 2, 1, -6, 5, 9 };
var res = vals.Where(isNeg);

Console.WriteLine(string.Join(',', res));

程序将Func委托应用于列表的元素。我们过滤所有负值。

$ dotnet run
-3,-1,-6

C#LINQwhere子句

查询表达式是另一种LINQ语法。在查询表达式中,我们使用where子句来过滤数据。

var words = new List<string> { "sky", "forest", "war", "buy",
    "crypto", "cup", "water", "cloud" };

var res = from word in words
          where word.StartsWith("c")
          select word;

Console.WriteLine(string.Join(',', res));

在程序中,我们过滤掉所有以字母“c”开头的单词。

$ dotnet run
crypto,cup,cloud

C#LINQWhere有多个条件

我们可以将多个条件与和/或运算符结合起来。

var users = new List<User>
{
    new ("John", "Doe", 1230),
    new ("Lucy", "Novak", 670),
    new ("Ben", "Walter", 2050),
    new ("Robin", "Brown", 2300),
    new ("Amy", "Doe", 1250),
    new ("Joe", "Draker", 1190),
    new ("Janet", "Doe", 980),
    new ("Albert", "Novak", 1930),
};

var res = users.Where(u => (u.LastName.StartsWith("D") ||
    u.LastName.StartsWith("W")) && u.Salary > 1000);

foreach (var e in res)
{
    Console.WriteLine(e);
}

record User(string FirstName, string LastName, int Salary);

在示例中,我们对过滤应用了三个条件。我们只选择名字以“D”或“W”开头且薪水高于1000的用户。

$ dotnet run
User { FirstName = John, LastName = Doe, Salary = 1230 }
User { FirstName = Ben, LastName = Walter, Salary = 2050 }
User { FirstName = Amy, LastName = Doe, Salary = 1250 }
User { FirstName = Joe, LastName = Draker, Salary = 1190 }

在本文中,我们介绍了LINQWhere操作。

列出所有C#教程。

未经允许不得转载:我爱分享网 » C# LINQ 在哪里

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏