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

相关推荐
深海潜水员18 分钟前
【Behavior Tree】-- 行为树AI逻辑实现- Unity 游戏引擎实现
游戏·unity·c#
开开心心_Every26 分钟前
便捷的Office批量转PDF工具
开发语言·人工智能·r语言·pdf·c#·音视频·symfony
小码编匠2 小时前
C# 上位机开发怎么学?给自动化工程师的建议
后端·c#·.net
cdbqss13 小时前
VB.net编写的身份证类
前端·.net
钢铁男儿3 小时前
C# 接口(什么是接口)
java·数据库·c#
ChaITSimpleLove3 小时前
.NET9 实现字符串拼接(StringConcatenation)性能测试
.net·性能测试·字符串拼接·csharp·string 拼接·benchmarktest
小老鼠爱大米6 小时前
C# WPF - Prism 学习篇:搭建项目(一)
c#·wpf·prism
小码编匠11 小时前
WPF 自定义分页控件,可通过样式模板修改外观
后端·c#·.net
CoderPractice12 小时前
C#控制台小项目-飞行棋
开发语言·c#·小游戏·飞行棋