Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
Ftt_Common
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Ftt_Common
Commits
62593bb0
Commit
62593bb0
authored
Jun 10, 2020
by
tr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、DataTable两表复制优化
2、增加DataRow行复制
parent
4689bf85
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
47 additions
and
6 deletions
+47
-6
EasyDataTable.cs
FunnyPick/FunnyPick/EasyDataTable.cs
+47
-6
No files found.
FunnyPick/FunnyPick/EasyDataTable.cs
View file @
62593bb0
...
...
@@ -65,23 +65,38 @@ namespace FunnyPick
/// <summary>
/// 复制
相同列
/// 复制
两表(针对同结构,不同结构只复制相同列)
/// </summary>
/// <param name="dtFrom">源表</param>
/// <param name="dtTarget">目标表</param>
/// <param name="distinctCol">去重列</param>
/// <param name="ExceptColList">去除列(即包含在此列表中的列不复制)</param>
public
void
CopySameCol
(
DataTable
dtFrom
,
DataTable
dtTarget
,
string
distinctCol
,
List
<
string
>
ExceptColList
=
null
)
/// <param name="AlwaysList">总是覆盖列(即包含在此列表中的列总是复制)</param>
/// <param name="ExceptList">去除列(即包含在此列表中的列不复制)</param>
public
void
CopyTable
(
DataTable
dtFrom
,
DataTable
dtTarget
,
string
distinctCol
=
""
,
List
<
string
>
AlwaysList
=
null
,
List
<
string
>
ExceptList
=
null
)
{
if
(
dtFrom
==
null
||
dtTarget
==
null
)
return
;
//
foreach
(
DataRow
r
in
dtFrom
.
Rows
)
{
if
(
IsIllegalDataRow
(
r
))
continue
;
//如果去重列不为空,并且两表都包含该列,则
取出
重复值
//如果去重列不为空,并且两表都包含该列,则
去除
重复值
if
(!
string
.
IsNullOrEmpty
(
distinctCol
)
&&
dtFrom
.
Columns
.
Contains
(
distinctCol
)
&&
dtTarget
.
Columns
.
Contains
(
distinctCol
))
{
if
(
dtTarget
.
Select
(
$"
{
distinctCol
}
='
{
r
[
distinctCol
]}
'"
).
Length
>
0
)
DataRow
[]
rows
=
dtTarget
.
Select
(
$"
{
distinctCol
}
='
{
r
[
distinctCol
]}
'"
);
if
(
rows
.
Length
>
0
&&
AlwaysList
!=
null
)
{
foreach
(
var
s
in
AlwaysList
)
{
if
(!
dtFrom
.
Columns
.
Contains
(
s
)
||
!
dtTarget
.
Columns
.
Contains
(
s
))
continue
;
rows
[
0
][
s
]
=
r
[
s
];
}
rows
[
0
].
EndEdit
();
continue
;
}
}
//创建目标新行
DataRow
drNew
=
dtTarget
.
NewRow
();
...
...
@@ -89,7 +104,7 @@ namespace FunnyPick
{
string
ColName
=
c
.
ColumnName
;
//ID和指定忽略的列,不复制
if
(
ColName
.
Equals
(
"ID"
)
||
Except
Col
List
?.
IndexOf
(
ColName
)
>=
0
)
if
(
ColName
.
Equals
(
"ID"
)
||
ExceptList
?.
IndexOf
(
ColName
)
>=
0
)
continue
;
if
(
dtTarget
.
Columns
.
Contains
(
ColName
))
{
...
...
@@ -100,6 +115,32 @@ namespace FunnyPick
dtTarget
.
Rows
.
Add
(
drNew
);
}
}
/// <summary>
/// 复制两行(针对相同结构,不同结构只复制相同列)
/// </summary>
/// <param name="drFrom">源行</param>
/// <param name="drTarget">目标行</param>
/// <param name="ExceptList">去除列(即其中包含的列不复制到目标行)</param>
public
static
void
CopyRow
(
DataRow
drFrom
,
DataRow
drTarget
,
List
<
string
>
ExceptList
=
null
)
{
if
(
drFrom
==
null
||
drTarget
==
null
)
return
;
//
foreach
(
DataColumn
c
in
drFrom
.
Table
.
Columns
)
{
string
ColName
=
c
.
ColumnName
;
//ID和指定列不复制
if
(
ColName
.
Equals
(
"ID"
)
||
ExceptList
?.
IndexOf
(
ColName
)
>=
0
)
continue
;
if
(
drTarget
.
Table
.
Columns
.
Contains
(
ColName
))
{
drTarget
[
ColName
]
=
drFrom
[
ColName
];
}
drTarget
.
EndEdit
();
}
}
/// <summary>
/// 是否无效行
/// </summary>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment