【.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的用法。

相关推荐
2501_930707784 分钟前
使用 C# .NET 从 PowerPoint 演示文稿中提取背景图片
c#·powerpoint·.net
初级代码游戏35 分钟前
套路化编程 C# winform 自适应缩放布局
开发语言·c#·winform·自动布局·自动缩放
大空大地20262 小时前
流程控制语句--switch多分支语句使用、while循环语句的使用、do...while语句、for循环
c#
kylezhao20193 小时前
C#序列化与反序列化详细讲解与应用
c#
JQLvopkk4 小时前
C# 实践AI :Visual Studio + VSCode 组合方案
人工智能·c#·visual studio
故事不长丨4 小时前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#
kingwebo'sZone4 小时前
C#使用Aspose.Words把 word转成图片
前端·c#·word
大空大地20264 小时前
表达式与运算符
c#
向上的车轮5 小时前
为什么.NET(C#)转 Java 开发时常常在“吐槽”Java:checked exception
java·c#·.net
心疼你的一切6 小时前
Unity异步编程神器:Unitask库深度解析(功能+实战案例+API全指南)
深度学习·unity·c#·游戏引擎·unitask