 |
|
สอบถามคำสั่ง LINQ to Oracle โดยใช้ Entity Framework จะต้องใช้งาน return เป็น datatable ตาม code ด้านใน |
|
 |
|
|
 |
 |
|
บันทัดที่ 19 ตัวแปร query มายังไงครับ
และตัวแปร ls ได้ค่ามาแล้วนีี่ครับ
|
ประวัติการแก้ไข 2019-11-06 10:11:10
 |
 |
 |
 |
Date :
2019-11-06 10:08:29 |
By :
birdbird27 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช้ LINQ แล้วลืม DataSet, DataTable ไปเลยครับ ใช้พวก List<T> แทนครับ
|
 |
 |
 |
 |
Date :
2019-11-06 10:10:56 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 3 เขียนโดย : mr.win เมื่อวันที่ 2019-11-06 10:10:56
รายละเอียดของการตอบ ::
ที่อยากทำคือ query ข้อมูล ls มาเก็บไว้ในตัวแปร dt
จากนั้นนำข้อมูล ใน dt มากรองอีกที่ แต่ติดที่เงื่อนไขวันที่ ที่เวลามาเกี่ยวด้วย
Code (C#)
.Where(row => Convert.ToDateTime(row["PAY_DATE"]) == Convert.ToDateTime("01/12/2561 13:01:19")) ==>ใช้ได้
แต่ที่อยากได้ เฉพาะวันที่อย่างเดียว ไม่เอาเวลา
Code (C#)
.Where(row => DateTime.ParseExact(row["PAY_DATE"].ToString(),"dd/MM/YYYY", CultureInfo.InvariantCulture) == new DateTime(2018, 10, 1)) == > ไม่ได้ Error
CODE ทั้งหมด รันได้ปกติ
Code (C#)
private IEnumerable<DataRow> query_step2;
private void data()
{
using (var db = new Entities())
{
List<CustomerInfo> ls;
ls = (from c in db.CUSTOMER
select new CustomerInfo
{
CusID = c.CUSTOMER_ID,
Name = c.NAME,
BUDGET = c.BUDGET,
PAY_DATE = c.PAY_DATE,
Age = c.AGE.Value
}).ToList();
//เก็บข้อมูลพักไว้ dt
DataTable dt = ToDataTable<CustomerInfo>(ls);
System.Console.WriteLine("ls=" + ls.Count() + " dt=" + dt);
//นำข้อมูล ใน dt มากรองวันที่อีกที
var date1 = Convert.ToDateTime("01/12/2561 00:00:00");
List<CustomerInfo> Sheet1 = dt.AsEnumerable()
//----------------------ERROR----------------------
//.Where(row => Convert.ToDouble(row["BUDGET"]) == Convert.ToDouble(3000000))
//.Where(row => Convert.ToDateTime(row["PAY_DATE"]) == Convert.ToDateTime("01/12/2561 13:01:19"))
//.Where(row => DateTime.ParseExact(row["PAY_DATE"].ToString(),"dd/MM/YYYY", CultureInfo.InvariantCulture) == new DateTime(2018, 10, 1))
//.Where(row => Convert.ToString(row["CusID"]) == Convert.ToString("C003")) //string
//----------------------ERROR----------------------
.Select(c => new CustomerInfo
{
CusID = Convert.ToString(c["CusID"]),
Name = Convert.ToString(c["Name"]),
BUDGET = Convert.ToDecimal(c["BUDGET"]),
PAY_DATE = Convert.ToDateTime(c["PAY_DATE"]),
Age = Convert.ToInt32(c["Age"])
}).ToList();
DataTable dt_step1 = new DataTable();
DataColumn CusID = new DataColumn("CusID");
CusID.DataType = System.Type.GetType("System.String");
dt_step1.Columns.Add(CusID); //0
DataColumn Name = new DataColumn("Name");
Name.DataType = System.Type.GetType("System.String");
dt_step1.Columns.Add(Name); //1
DataColumn BUDGET = new DataColumn("BUDGET");
BUDGET.DataType = System.Type.GetType("System.Double");
dt_step1.Columns.Add(BUDGET); //3
DataColumn PAY_DATE = new DataColumn("PAY_DATE");
PAY_DATE.DataType = System.Type.GetType("System.DateTime");
dt_step1.Columns.Add(PAY_DATE);//4
DataColumn Age = new DataColumn("Age");
Age.DataType = System.Type.GetType("System.Double");
dt_step1.Columns.Add(Age); //5
System.Console.WriteLine("foreach (var a in ls)=" + ls.Count());
//System.Console.WriteLine("foreach (var a in query3)=" + query3.Count());
foreach (var a in Sheet1)
{
var row = dt_step1.NewRow();
row["CusID"] = a.CusID;
row["Name"] = a.Name; //1
row["BUDGET"] = a.BUDGET;//2
row["PAY_DATE"] = Convert.ToDateTime(a.PAY_DATE);//3
System.Console.WriteLine(a.PAY_DATE);
row["Age"] = a.Age;//4
dt_step1.Rows.Add(row);
}
if (dt_step1.Rows.Count > 0)
{
System.Console.WriteLine("หลัง foreach dt_step1.Rows.Count=" + dt_step1.Rows.Count);
}
//IEnumerable<DataRow> query_step2;
if (comboBox1.Text == "25ปีขึ้นไป")
{
query_step2 = from l2 in dt_step1.AsEnumerable()
where l2.Field<double>("Age") >= 25
select l2;
}
else
{
double xunit_due = double.Parse(comboBox1.Text);
query_step2 = from l2 in dt_step1.AsEnumerable()
where l2.Field<double>("Age") == xunit_due
select l2;
}
var rowSources = query_step2.AsEnumerable();
System.Console.WriteLine("query_step2="+ query_step2.Count() + " rowSources=" + rowSources.Count());
if (rowSources.Any())
{
DataTable dtt = rowSources.CopyToDataTable();
System.Console.WriteLine("rows.CopyToDataTable()=" + dtt.Rows.Count);
dt_step1.Clear();
if (dtt.Rows.Count > 0)
{
System.Console.WriteLine("dt.Rows.Count=" + dtt.Rows.Count);
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
columnx();
int row = dtt.Rows.Count - 1;
for (int r = 0; r <= row; r++)
{
progressBar1.Visible = true;
progressBar1.Maximum = row;
if (progressBar1.Value <= row - 1)
{
progressBar1.Value = progressBar1.Value + 1;
}
dataGridView1.Rows.Add();
dataGridView1.Rows[r].Cells[0].Value = dtt.Rows[r].ItemArray[0].ToString();
dataGridView1.Rows[r].Cells[1].Value = dtt.Rows[r].ItemArray[1].ToString();
dataGridView1.Rows[r].Cells[2].Value = dtt.Rows[r].ItemArray[2].ToString();
dataGridView1.Rows[r].Cells[3].Value = dtt.Rows[r].ItemArray[3].ToString();
dataGridView1.Rows[r].Cells[4].Value = dtt.Rows[r].ItemArray[4].ToString();
}
}
}
else
{
System.Console.WriteLine("else");
}
}
}
|
 |
 |
 |
 |
Date :
2019-11-12 17:16:51 |
By :
Takashi_7 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|