c# linq常用操作方法
- 查询语法
var query = from item in collection
where condition
select item;
这段代码展示了 LINQ 查询的基本结构,collection
是要查询的数据源,condition
是查询条件。
- 方法链式调用
var query = collection.Where(item => condition).Select(item => item);
这段代码展示了使用方法链式调用的方式进行查询,Where
用于筛选满足条件的元素,Select
用于选择需要的元素。
- 筛选数据
var filteredData = data.Where(item => item.Property == value);
这段代码展示了如何根据指定条件筛选数据。
- 排序数据
var sortedData = data.OrderBy(item => item.Property);
这段代码展示了如何按照指定属性对数据进行排序。
- 投影数据
var projectedData = data.Select(item => item.Property);
这段代码展示了如何选择数据中的指定属性或字段进行投影。
- 翻译查询结果
var list = query.ToList();
var array = query.ToArray();
这段代码展示了如何将查询的结果转换为列表或数组。
- 连接多个数据源
var joinedData = data1.Join(data2, item1 => item1.Key, item2 => item2.Key, (item1, item2) => new { Item1 = item1, Item2 = item2 });
这段代码展示了如何连接多个数据源,并使用指定的条件进行关联。
- 分组数据
var groupedData = data.GroupBy(item => item.Category);
这段代码展示了如何根据指定的属性对数据进行分组。
- 嵌套查询
var nestedQuery = from item in collection
where subquery.Contains(item.Property)
select item;
这段代码展示了如何在查询中嵌套使用子查询。
- 聚合函数
var count = data.Count();
var sum = data.Sum(item => item.Value);
var average = data.Average(item => item.Value);
var max = data.Max(item => item.Value);
var min = data.Min(item => item.Value);
这段代码展示了 LINQ 提供的一些常用的聚合函数,如计数、求和、平均值、最大值和最小值。
下面是一个包含上述所有用法的完整示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
// 生成测试数据
List<Item> data = new List<Item>()
{
new Item { Name = "Item1", Category = "Category1", Price = 10 },
new Item { Name = "Item2", Category = "Category2", Price = 20 },
new Item { Name = "Item3", Category = "Category1", Price = 30 },
new Item { Name = "Item4", Category = "Category2", Price = 40 }
};
// 查询语法
var query1 = from item in data
where item.Category == "Category1"
select item;
Console.WriteLine("查询语法结果:");
foreach (var item in query1)
{
Console.WriteLine(item.Name);
}
// 方法链式调用
var query2 = data.Where(item => item.Category == "Category1").Select(item => item);
Console.WriteLine("方法链式调用结果:");
foreach (var item in query2)
{
Console.WriteLine(item.Name);
}
// 筛选数据
var filteredData = data.Where(item => item.Price > 20);
Console.WriteLine("筛选数据结果:");
foreach (var item in filteredData)
{
Console.WriteLine(item.Name);
}
// 排序数据
var sortedData = data.OrderBy(item => item.Price);
Console.WriteLine("排序数据结果:");
foreach (var item in sortedData)
{
Console.WriteLine(item.Name);
}
// 投影数据
var projectedData = data.Select(item => item.Name);
Console.WriteLine("投影数据结果:");
foreach (var item in projectedData)
{
Console.WriteLine(item);
}
// 翻译查询结果
var list = query1.ToList();
var array = query1.ToArray();
// 连接多个数据源
List<Item2> data2 = new List<Item2>()
{
new Item2 { Key = "Key1", Value = "Value1" },
new Item2 { Key = "Key2", Value = "Value2" }
};
var joinedData = data.Join(data2, item1 => item1.Name, item2 => item2.Key, (item1, item2) => new { Item1 = item1, Item2 = item2 });
Console.WriteLine("连接多个数据源结果:");
foreach (var item in joinedData)
{
Console.WriteLine(item.Item1.Name + " - " + item.Item2.Value);
}
// 分组数据
var groupedData = data.GroupBy(item => item.Category);
Console.WriteLine("分组数据结果:");
foreach (var group in groupedData)
{
Console.WriteLine("Category: " + group.Key);
foreach (var item in group)
{
Console.WriteLine("- " + item.Name);
}
}
// 嵌套查询
var subquery = data2.Select(item => item.Key);
var nestedQuery = from item in data
where subquery.Contains(item.Category)
select item;
Console.WriteLine("嵌套查询结果:");
foreach (var item in nestedQuery)
{
Console.WriteLine(item.Name);
}
// 聚合函数
var count = data.Count();
var sum = data.Sum(item => item.Price);
var average = data.Average(item => item.Price);
var max = data.Max(item => item.Price);
var min = data.Min(item => item.Price);
Console.WriteLine("聚合函数结果:");
Console.WriteLine("Count: " + count);
Console.WriteLine("Sum: " + sum);
Console.WriteLine("Average: " + average);
Console.WriteLine("Max: " + max);
Console.WriteLine("Min: " + min);
}
}
class Item
{
public string Name { get; set; }
public string Category { get; set; }
public int Price { get; set; }
}
class Item2
{
public string Key { get; set; }
public string Value { get; set; }
}
以上是关于 C# LINQ 的常见用法的简要介绍以及每个用法的示例代码和注释。您可以根据需要自行修改和扩展这些代码。如果有任何疑问,请随时提问。
标签:
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明