合并并排序 2 个表
本文关键字:个表 排序 合并 | 更新日期: 2023-09-27 18:31:01
我有2个数据表(在一个数据集中)
表 1:
ID|ident |Pos
------------------
0 | id425 | 0
1 | id123 | 3
表 2:
ID|ident |default|Pos
---------------------------
0 | id1 | 6 |2
1 | id180 | 6 |1
现在我想对 LINQ 进行排序,以生成以下输出:
Result
ident|Pos
-------------
id425|0
id180|1
id1 |2
id123|3
现在,我正在努力使用 LINQ 来通过一个 linq 查询来实现这一点。我是 LINQ 的新手,所以我希望 somone 能给我一个提示。我的问题是如何对两个表进行排序并合并结果。到目前为止,我的代码是:
var query =
from t1 in dataSet.Tables[tableOne].AsEnumerable()
from t2 in dataSet.Tables[tableTwo].AsEnumerable()
orderby t1[Pos]
orderby t2[Pos]
select new {t1,t2};
但这行不通。
首先,
我将使用具有相同列的匿名类型才能使用Enumerable.Concat
。然后是一个简单的OrderBy
:
var t1Rows = dataSet.Tables[tableOne].AsEnumerable()
.Select(r => new{ ident=r.Field<string>("ident"),Pos=r.Field<int>("Pos") });
var t2Rows = dataSet.Tables[tableTwo].AsEnumerable()
.Select(r => new{ ident=r.Field<string>("ident"),Pos=r.Field<int>("Pos") });
var both = t1Rows.Concat(t2Rows);
var ordered = both.OrderBy(x => x.Pos);
在一个查询中也是如此(对于它的价值,由于Concat
,纯查询语法是不可能的):
var query = dataSet.Tables[tableOne].AsEnumerable()
.Select(r => new { ident = r.Field<string>("ident"), Pos = r.Field<int>("Pos") })
.Concat(dataSet.Tables[tableTwo].AsEnumerable()
.Select(r => new { ident = r.Field<string>("ident"), Pos = r.Field<int>("Pos") }))
.OrderBy(x => x.Pos);
试试这个:
var result_datatable1 = from o in table1
select new
{
o.ident,
o.Pos
};
var result_datatable2 = from o in tabl2
select new
{
o.ident,
o.Pos
};
var resultSum = result_datatable1.Concat(result_datatable2);