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

相关推荐
喵叔哟5 分钟前
9.【.NET10 实战--孢子记账--产品智能化】--SP.MLService Microsoft.ML 升级到 .NET 10
microsoft·.net
北漂Zachary1 小时前
四大编程语言终极对决:汇编/C#/Go/Java谁更强
汇编·golang·c#
nnsix5 小时前
C# ProcessStartInfo对象笔记
开发语言·笔记·c#
格林威5 小时前
工业相机“心跳”监测脚本(C# 版) 支持海康 / Basler / 堡盟工业相机
开发语言·人工智能·数码相机·opencv·计算机视觉·c#·视觉检测
刚子编程7 小时前
C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生
开发语言·c#·事务处理·trycatch
斯卡文计算机术士7 小时前
C#测试(二)
c#
manyikaimen7 小时前
博派智能-运动控制技术-C#环境的搭建
c#·环境搭建·运动控制器·运动控制卡·动态库调用
xiaoshuaishuai818 小时前
C# GPU算力与管理
开发语言·windows·c#
hez201020 小时前
C# 15 类型系统改进:Union Types
c#·.net·.net core
FL162386312921 小时前
基于C#winform部署软前景分割DAViD算法的onnx模型实现前景分割
开发语言·算法·c#