文章目录
一、Linq介绍
LINQ(Language Integrated Query)是C#中的一个强大功能,允许您使用统一的语法查询和操作来自不同数据源的数据。
二、在两个数据源联合查询中的使用
在提供的代码片段中,创建了两个DataTable dt1 和 dt2 ,并用数据填充它们。代码然后使用LINQ根据特定条件连接这两个DataTable,并更新某些列的值。
-
- 创建两个DataTable dt1 和 dt2 ,并用数据填充。
-
- LINQ查询将 dt1 和 dt2 的行连接起来,其中 dt1 的"朋友6"列的值与 dt2 的"家人2"列的值匹配。
-
- 对于每个匹配的行对,将 dt1 的"朋友8"列的值更新为 dt2 的"家人8"列的值。
-
- 最后将更新后的 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用法示例:
-
- 过滤数据:
csharp
csharp
var filteredData = from item in collection
where item.Property > 10
select item;
-
- 分组数据:
csharp
csharp
var groupedData = from item in collection
group item by item.Category into grouped
select new { Category = grouped.Key, Count = grouped.Count() };
-
- 排序数据:
csharp
csharp
var orderedData = from item in collection
orderby item.Name ascending
select item;
这些只是LINQ用法的几个示例。希望这些能帮助您更好地理解LINQ的用法。