private void button1_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Age", typeof(int)); dt.Columns.Add("Sex", typeof(string)); dt.Rows.Add("z", 10, "male"); dt.Rows.Add("z", 10, "male"); dt.Rows.Add("x", 11, "male"); dt.Rows.Add("y", 12, "male"); //查詢Name=‘z’的所有行 var rows = dt.Select("Name='z'"); //使用linq進行各種查詢 var q1 = (from d in dt.AsEnumerable() where d.Field("Age") > 10 orderby d.Field("Name") descending select new Item //創建一個類,用於存儲屬性 { Age = d.Field("Age"), Name = d.Field("Name") } ); foreach (Item t in q1.ToList()) { MessageBox.Show(t.Name + t.Age + t.Sex); } var q = q1.Where(p => p.Age > 10).ToList();//篩選年齡大於10的信息 //獲取datatable的總數 string rowCount = dt.Compute("count(Name)", null).ToString(); //計算某一列的值 string sumCount = dt.Compute("sum(Age)", null).ToString(); //取得某一列的平均值 string avgValue = dt.Compute("avg(Age)", null).ToString(); //取得最小值 string minValue = dt.Compute("min(Age)", null).ToString();//max最大值 //------------------多條件排序 var list = from d in dt.AsEnumerable() orderby d.Field("Age") descending, d.Field("Name") ascending// new { t1 = d.Field("Age") , t2 = d.Field("Name") } select new { Name = d.Field("Name"), Age = d.Field("Age") }; //--------------分組 //按照Name分組,並且將Name對應的Age的值得和統計 var group = from d in dt.AsEnumerable() group d by d.Field("Name") into m select new { Name = m.Key,//Name sum = m.Sum(n => n.Field("Age")),//和 avg=m.Average(n=>n.Field("Age")),//平均值 max=m.Max(n => n.Field("Age")),//最大值 min=m.Min(n => n.Field("Age")),//最小值 count=m.Count()//個數 }; foreach (var m in group.ToList()) MessageBox.Show(m.Name + "," + m.sum +","+m.count);
private void
button1_Click(
object sender,
EventArgs e)
{
DataTable dt =
new DataTable();
dt.
Columns.
Add(
"Name",
typeof(
string));
dt.
Columns.
Add(
"Age",
typeof(
int));
dt.
Columns.
Add(
"Sex",
typeof(
string));
dt.
Rows.
Add(
"z",
10,
"male");
dt.
Rows.
Add(
"z",
10,
"male");
dt.
Rows.
Add(
"x",
11,
"male");
dt.
Rows.
Add(
"y",
12,
"male");
//查詢Name=‘z’的所有行
var rows =
dt.
Select(
"Name='z'");
//使用linq進行各種查詢
var q1 = (
from d
in
dt.
AsEnumerable()
where
d.
Field(
"Age") >
10
orderby
d.
Field(
"Name")
descending
select
new
Item
//創建一個類,用於存儲屬性
{
Age =
d.
Field(
"Age"),
Name =
d.
Field(
"Name")
}
);
foreach (Item t
in
q1.
ToList())
{
MessageBox.
Show(
t.
Name +
t.
Age +
t.
Sex);
}
var q =
q1.
Where(p =>
p.
Age >
10).
ToList();
//篩選年齡大於10的信息
//獲取datatable的總數
string rowCount =
dt.
Compute(
"count(Name)",
null).
ToString();
//計算某一列的值
string sumCount =
dt.
Compute(
"sum(Age)",
null).
ToString();
//取得某一列的平均值
string avgValue =
dt.
Compute(
"avg(Age)",
null).
ToString();
//取得最小值
string minValue =
dt.
Compute(
"min(Age)",
null).
ToString();
//max最大值
//------------------多條件排序
var list =
from d
in
dt.
AsEnumerable()
orderby
d.
Field(
"Age")
descending,
d.
Field(
"Name")
ascending
// new { t1 = d.Field("Age") , t2 = d.Field("Name") }
select
new
{
Name =
d.
Field(
"Name"),
Age =
d.
Field(
"Age")
};
//--------------分組
//按照Name分組,並且將Name對應的Age的值得和統計
var group =
from d
in
dt.
AsEnumerable()
group
d
by
d.
Field(
"Name")
into m
select
new
{
Name =
m.
Key,
//Name
sum =
m.
Sum(n =>
n.
Field(
"Age")),
//和
avg=
m.
Average(n=>
n.
Field(
"Age")),
//平均值
max=
m.
Max(n =>
n.
Field(
"Age")),
//最大值
min=
m.
Min(n =>
n.
Field(
"Age")),
//最小值
count=
m.
Count()
//個數
};
foreach (
var m
in
group.
ToList())
MessageBox.
Show(
m.
Name +
"," +
m.
sum +
","+
m.
count);