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

相关推荐
未来之窗软件服务10 小时前
幽冥大陆(四十一)美萍V10酒店门锁SDK C#语言仙盟插件——东方仙盟筑基期
开发语言·c#·仙盟创梦ide·东方仙盟·东方仙盟sdk·酒店智能门锁·东方仙盟 vos 智能浏览器
用户83562907805114 小时前
Word 图表自动化:基于 C# 的高效数据可视化方案
后端·c#
Crazy Struggle15 小时前
.NET 8 微服务框架长什么样?集成 AI 智能体、多租户、自动调度与实时通信
微服务·.net·.net 8.0
wangnaisheng16 小时前
【C#】MQTT的使用
c#
玩泥巴的19 小时前
一分钟实现.NET与飞书长连接的WebSocket架构
c#·.net·二次开发·飞书
mudtools19 小时前
一分钟实现.NET与飞书长连接的WebSocket架构
后端·c#·.net
Sunsets_Red19 小时前
二项式定理
java·c++·python·算法·数学建模·c#
源之缘-OFD先行者21 小时前
定制化 Live555 实战:按需开发低耗 RTSP 服务器,完美适配 C# 项目
运维·服务器·c#
SEO-狼术21 小时前
FastGrid delivers clean Crack
.net
hakertop21 小时前
如何基于C#读取.dot图论文件并和QuickGraph联动
数据库·c#·图论