【.Net】Linq的使用

文章目录


一、Linq介绍

LINQ(Language Integrated Query)是C#中的一个强大功能,允许您使用统一的语法查询和操作来自不同数据源的数据。

二、在两个数据源联合查询中的使用

在提供的代码片段中,创建了两个DataTable dt1 和 dt2 ,并用数据填充它们。代码然后使用LINQ根据特定条件连接这两个DataTable,并更新某些列的值。

    1. 创建两个DataTable dt1 和 dt2 ,并用数据填充。
    1. LINQ查询将 dt1 和 dt2 的行连接起来,其中 dt1 的"朋友6"列的值与 dt2 的"家人2"列的值匹配。
    1. 对于每个匹配的行对,将 dt1 的"朋友8"列的值更新为 dt2 的"家人8"列的值。
    1. 最后将更新后的 dt1 数据显示到控制台上。
csharp 复制代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建第一个DataTable并添加数据
            DataTable dt1 = new DataTable();
            for (int i = 1; i <= 10; i++)
            {
                dt1.Columns.Add("朋友" + i);
            }
            for (int i = 1; i <= 10; i++)
            {
                DataRow row = dt1.NewRow();
                for (int j = 0; j < 10; j++)
                {
                    if (i == 5 && j == 5 || i == 7 && j == 7)
                    {
                        row[j] = "222";
                    }
                    else
                    {
                        row[j] = "1";
                    }
                    
                }
                dt1.Rows.Add(row);
            }

            // 创建第二个DataTable并添加数据
            DataTable dt2 = new DataTable();
            for (int i = 1; i <= 10; i++)
            {
                dt2.Columns.Add("家人" + i);
            }
            for (int i = 1; i <= 10; i++)
            {
                DataRow row = dt2.NewRow();
                for (int j = 0; j < 10; j++)
                {
                    row[j] = "222";
                }
                dt2.Rows.Add(row);
            }

            // 使用LINQ连接两个DataTable并根据匹配值赋值
            var result = from row1 in dt1.AsEnumerable()
                         join row2 in dt2.AsEnumerable()
                         on row1["朋友6"] equals row2["家人2"]
                         select new
                         {
                             Row1 = row1,
                             Row2 = row2
                         };

            foreach (var item in result)
            {
                item.Row1["朋友8"] = item.Row2["家人8"];
            }

            // 输出结果
            foreach (DataRow row in dt1.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write(item + "\t");
                }
                Console.WriteLine();
            }

            Console.ReadKey();
        }
    }
}

三、Linq的其他用法

LINQ可以用于各种操作,如过滤、排序、分组和聚合不同数据源(如数据库、集合和XML文件)中的数据。以下是一些LINQ用法示例:

    1. 过滤数据:
csharp 复制代码
csharp
var filteredData = from item in collection
                   where item.Property > 10
                   select item;
    1. 分组数据:
csharp 复制代码
csharp
var groupedData = from item in collection
                  group item by item.Category into grouped
                  select new { Category = grouped.Key, Count = grouped.Count() };
    1. 排序数据:
csharp 复制代码
csharp
var orderedData = from item in collection
                  orderby item.Name ascending
                  select item;

这些只是LINQ用法的几个示例。希望这些能帮助您更好地理解LINQ的用法。

相关推荐
唐青枫9 分钟前
一篇搞定 dotnet ef:EF Core 常用命令与实战指南
c#·.net
烛阴8 小时前
C# 正则表达式(2):Regex 基础语法与常用 API 全解析
前端·正则表达式·c#
Poetinthedusk9 小时前
C#实现图片统一位深
开发语言·c#
bugcome_com10 小时前
深入理解 C# 中的装箱与拆箱
c#
切糕师学AI10 小时前
使用 VS Code 开发 C# 程序时,如何配置 launch.json
vscode·c#·visual studio code
bugcome_com12 小时前
深入理解 C# 中 new 关键字的三重核心语义
c#·.net
Sunsets_Red14 小时前
2025 FZYZ夏令营游记
java·c语言·c++·python·算法·c#
我是唐青枫14 小时前
C#.NET struct 全解析:什么时候该用值类型?
开发语言·c#·.net
喵叔哟15 小时前
13.生产环境实践
.net