/*遍历DataTable*/
class
ClientStruct
{
public
string
ID =
"ID"
;
public
string
Name =
"Name"
;
public
string
Company =
"Company"
;
public
string
CreatedDate =
"CreatedDate"
;
}
public
string
[,] infoArr =
new
string
[,] { {
"1"
,
"百度"
,
"baidu"
,
"201303"
}, {
"2"
,
"迅雷"
,
"xunlei"
,
"201302"
}, {
"3"
,
"谷歌"
,
"guge"
,
"201301"
} };
protected
void
LinqDataTable()
{
DataRow row;
ClientStruct cs =
new
ClientStruct();
DataTable dtTable =
new
DataTable();
dtTable.Columns.Add(cs.ID);
dtTable.Columns.Add(cs.Name);
dtTable.Columns.Add(cs.Company);
dtTable.Columns.Add(cs.CreatedDate);
for
(
int
i = 0; i < 3; i++)
{
row = dtTable.NewRow();
row[cs.ID] = infoArr[i, 0];
row[cs.Name] = infoArr[i, 1];
row[cs.Company] = infoArr[i, 2];
row[cs.CreatedDate] = infoArr[i, 3];
dtTable.Rows.Add(row);
}
//遍历DataTable,取出所有的ID
List<
string
> lstID = (from d
in
dtTable.AsEnumerable()
select d.Field<
string
>(cs.ID)).ToList<
string
>();
//遍历DataTable,将其中的数据对应到ClientStruct中:
List<ClientStruct> list = (from x
in
dtTable.AsEnumerable()
orderby x.Field<
string
>(cs.Company)
select
new
ClientStruct
{
ID = x.Field<
string
>(cs.ID),
Name = x.Field<
string
>(cs.Name),
Company = x.Field<
string
>(cs.Company),
CreatedDate = x.Field<
string
>(cs.CreatedDate)
}).ToList<ClientStruct>();
//遍历DataTable,并将上面的List结果存储到Dictionary中:
Dictionary<
string
, ClientStruct> dic = list.ToDictionary(p => p.Company);
//p作为string键值来存储
}
//选取datatable指定列
var query = from c in dt.AsEnumerable()
select new
XSDDExeStatusMingXi
{
vou_no = c.Field<string>("vou_no"),
corr_id = c.Field<string>("corr_id"),
corr_name = c.Field<string>("corr_name"),
item_no = c.Field<string>("item_no"),
item_name = c.Field<string>("item_name"),
item_spec = c.Field<string>("item_spec"),
item_pattern = c.Field<string>("item_pattern"),
unit_name = c.Field<string>("unit_name"),
order_qty = c.Field<decimal>("order_qty"),
date_demand = c.Field<DateTime>("date_demand"),
lock_qty = c.Field<decimal>("lock_qty"),
PC_qty = c.Field<decimal?>("PC_qty") == 0 ? "": c.Field<decimal?>("PC_qty").ToString(),
PG_qty = c.Field<decimal?>("PG_qty") == 0 ? "" : c.Field<decimal?>("PG_qty").ToString(),
RK_qty = c.Field<decimal?>("RK_qty") == 0 ? "" : c.Field<decimal?>("RK_qty").ToString(),
FH_qty = c.Field<decimal?>("FH_qty") == 0 ? "" : c.Field<decimal?>("FH_qty").ToString(),
};
//group by
var query = from c in dt.AsEnumerable()
group c by new
{
vou_no = c.Field<string>("vou_no"),
vou_no_line = c.Field<int>("vou_no_line"),
confirm_date = c.Field<DateTime?>("confirm_date")
}
into s
select new
XSDDExeStatusMingXi
{
vou_no = c.Select(p => p.Field<string>("vou_no").Trim()).First(),
corr_id = s.Select(p => p.Field<string>("corr_id").Trim()).First(),
corr_name = s.Select(p => p.Field<string>("corr_name").Trim()).First(),
item_no = s.Select(p => p.Field<string>("item_no").Trim()).First(),
item_name = s.Select(p => p.Field<string>("item_name").Trim()).First(),
item_spec = s.Select(p => p.Field<string>("item_spec").Trim()).First(),
item_pattern = s.Select(p => p.Field<string>("item_pattern").Trim()).First(),
unit_name = s.Select(p => p.Field<string>("unit_name").Trim()).First(),
order_qty = s.Select(p => p.Field<decimal>("order_qty")).First(),
date_demand = s.Select(p => p.Field<DateTime>("date_demand")).First(),
lock_qty = s.Select(p => p.Field<decimal>("lock_qty")).First(),
PC_qty = string.Join("<br>", s.Select(p => p.Field<decimal?>("PC_qty") == 0 ? "" : p.Field<decimal?>("PC_qty").ToString())),
PG_qty = string.Join("<br>", s.Select(p => p.Field<decimal?>("PG_qty") == 0 ? "" : p.Field<decimal?>("PG_qty").ToString())),
RK_qty = string.Join("<br>", s.Select(p => p.Field<decimal?>("RK_qty") == 0 ? "" : p.Field<decimal?>("RK_qty").ToString())),
FH_qty = string.Join("<br>", s.Select(p => p.Field<decimal?>("FH_qty") == 0 ? "" : p.Field<decimal?>("FH_qty").ToString()))
};