使用 c# 将两个数据集中的特定列合并到第三个数据集中的方法

Posted

技术标签:

【中文标题】使用 c# 将两个数据集中的特定列合并到第三个数据集中的方法【英文标题】:Ways to merge specific columns from two dataset into a third dataset using c# 【发布时间】:2012-06-22 07:27:46 【问题描述】:

假设我有两个Dataset ds1 & ds2 都持有来自两个不同Tables 的数据

Sql1 = "Select sTitle, sDate,active,color FROM TABLE1"
Sql2 = "Select eName, eDate FROM TABLE2"

将这两个ds1, ds2 合并到第三个数据集ds3 的最佳方法是什么? EventTitle, BlockedDate 我想从ds1eName, eDateds2 获取sTitle, sDate

考虑到每个查询可能最多有 200 行,我需要知道一种快速的方法

实际的sql1是

;with Calendar as (
    select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime, EventRecurring, EventStartDate as PlannedDate
    ,EventType from EventCalender
    where EventActive = 1 AND LanguageID =1 AND EventBlockDate = 1 AND(  EventStartDate >= GETDATE() OR EventEndDate >= GETDATE() )
    union all
    select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime, EventRecurring, dateadd(dd, 1, PlannedDate)
    ,EventType from Calendar
    where (EventRecurring = 1
        and dateadd(dd, 1, PlannedDate) <= EventEndDate ) OR (EventRecurring = 0
        and dateadd(dd, 1, PlannedDate) <= EventEndDate) 
)
select EventID, EventStartDate, EventEndDate, PlannedDate as [EventDates], Cast(PlannedDate As datetime) +''+ Cast(EventStartTime As time) AS DT, EventTitle
,EventType from Calendar
where (PlannedDate >= GETDATE()) AND ',' + EventEnumDays + ',' like '%,' + cast(datepart(dw, PlannedDate) as char(1)) + ',%'
    AND PlannedDate <= DATEADD(month, 2, GETDATE())
    or EventEnumDays is null
order by EventID, PlannedDate
option (maxrecursion 0)

【问题讨论】:

【参考方案1】:

我认为您应该使用joinUnion 将其加入query string,而不是合并datatable

【讨论】:

同意你的观点,但在我的情况下,我正在使用有点复杂的 CTE 查询来获得所需的结果。这就是为什么我想避免 UNION ...我已将实际查询添加到问题中。

以上是关于使用 c# 将两个数据集中的特定列合并到第三个数据集中的方法的主要内容,如果未能解决你的问题,请参考以下文章

合并两个父>子表集

合并R中的数据集:对于两个数据集中的每个值,在第三个数据集中创建一个新行[重复]

如何将一列插入到两个现有列之间的数据集中?

在 C# 中从特定时间点将 Mp3 文件合并在一起

如何将 3 个 Pandas 数据帧合并到第 4 个数据帧以匹配列值名称?

如何将列表项附加到数据框中的特定列?