是說DataTable要以某一欄(Column)為主,取不重複值,這個其實不難做
以前以為要用LinQ啥的一直很排斥去學,總想著能用SQL就不要用另一套
最近大概
程式碼就一行不囉嗦!
DataTable NewDT = OldDT.DefaultView.ToTable(true, new string[] { "要取專一值的Column名稱" });
因為字數太少
那如果要達到以下效果的話~資料倒入方式如下,先倒不重複值才知道欄位要開多大阿~
原始資料 | 展示方式 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
DataTable NewDT = OldDT.DefaultView.ToTable(true, new string[] { "Name" });
2.加入新的一行欄名(有多欄的話,可以在這邊都加一加)
NewDT .Columns.Add("Type");
NewDT .Columns.Add("Type2");....etc.
3.比對新舊DataTable,將值插入新的Type欄
string strType = "";
for (int i = 0; i < NewDT.Rows.Count; i++)
{
Label olType = new Label();
for (int j = 0; j < OldDT.Rows.Count; j++)
{
if (OldDT.Rows[j]["Name"].ToString() == NewDT.Rows[i]["Name"].ToString())
{
strType += OldDT.Rows[j]["Type"].ToString();
if (j < OldDT.Rows.Count - 1)
{
strType += ",";
}
olType.Text = strType;
}
if (olType.Text.Length > 0)
{
if (olType.Text.Substring(olType.Text.Length - 1, 1) == ",")
{
olType.Text = olType.Text.Substring(0, olType.Text.Length - 1);
}
}
}
//不用NewDT.Rows[i]["Type"].ToString()
NewDT.Rows[i]["Type"] = olType.Text;
}
好了就這樣
沒有留言:
張貼留言