在好例子网,分享、交流、成长!
<<

c# linq常用操作方法

  1. 查询语法
var query = from item in collection
            where condition
            select item;

这段代码展示了 LINQ 查询的基本结构,collection 是要查询的数据源,condition 是查询条件。

  1. 方法链式调用
var query = collection.Where(item => condition).Select(item => item);

这段代码展示了使用方法链式调用的方式进行查询,Where 用于筛选满足条件的元素,Select 用于选择需要的元素。

  1. 筛选数据
var filteredData = data.Where(item => item.Property == value);

这段代码展示了如何根据指定条件筛选数据。

  1. 排序数据
var sortedData = data.OrderBy(item => item.Property);

这段代码展示了如何按照指定属性对数据进行排序。

  1. 投影数据
var projectedData = data.Select(item => item.Property);

这段代码展示了如何选择数据中的指定属性或字段进行投影。

  1. 翻译查询结果
var list = query.ToList();
var array = query.ToArray();

这段代码展示了如何将查询的结果转换为列表或数组。

  1. 连接多个数据源
var joinedData = data1.Join(data2, item1 => item1.Key, item2 => item2.Key, (item1, item2) => new { Item1 = item1, Item2 = item2 });

这段代码展示了如何连接多个数据源,并使用指定的条件进行关联。

  1. 分组数据
var groupedData = data.GroupBy(item => item.Category);

这段代码展示了如何根据指定的属性对数据进行分组。

  1. 嵌套查询
var nestedQuery = from item in collection
                  where subquery.Contains(item.Property)
                  select item;

这段代码展示了如何在查询中嵌套使用子查询。

  1. 聚合函数
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小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

报警