[英]how to filter datatable column value using linq Query
我的數據庫中有一個表。 該表稱為順序。 在此表中,我有一些字段,例如DOCNUMBR,VENDORID,DOCDATE等。
我在C#應用程序中獲取了DataTable dt中的所有記錄。現在我想按三個類別過濾記錄。 1.按文件編號。 例如,從DOCNUMBR = 1000到5000 2.通過供應商ID。 從文件日期從VENDORID = ACETRAVE0001到DOLECKIC0001 3。 實施例從DOCDATE = 31/04/2014到2014年1月4日
我有以下SQL查詢。
SELECT * FROM訂單其中VENDORID = 'ACETRAVE0001' 或VENDORID像 '一%' 或VENDORID = 'DOLECKIC0001' 或VENDORID像 'd%'
從DOCNUMBR> ='1000'和DOCNUMBR <='5000'的訂單中選擇*
從DOCDATE> ='2013-09-26'和DOCDATE <='2014-09-26'的訂單中選擇*
我想通過在C#應用程序中的DataTable上使用LINQ進行此過濾。 我輸入了以下代碼,但不滿意。
private DataTable filterByRang(string _from, string _to, string flag,DataTable dt)
{
try
{
if (flag == "isDocument")
{
var Value = dt.AsEnumerable().Where(z => z.Field<string>("DOCNUMBR").StartsWith(_from ) ||z.Field<string>("DOCNUMBR").Contains(_from )||
z.Field<string>("DOCNUMBR").StartsWith(_to) || z.Field<string>("DOCNUMBR").Contains(_to));
dt = Value.CopyToDataTable();
}
else if (flag == "isDocDate")
{
var filter = dt.AsEnumerable().Where(x => x.Field<string>("DOCDATE").Substring(0, 9) == _from || x.Field<string>("DOCDATE").Substring(0, 9) == _to);
dt = filter.CopyToDataTable();
}
else if (flag == "isVendor")
{
var Value = from row in dt.AsEnumerable()
where row.Field<string>("VENDORID").ToLower().Contains(_from.ToLower()) || row.Field<string>("VENDORID").ToLower().Contains(_to.ToLower())
orderby row.Field<string>("VENDORID")
select row;
dt = Value.CopyToDataTable();
}
}
catch (Exception ex)
{
Console.Write(ex.Message);
}
return dt;
}
先感謝您!
您可以使用Dataview代替Linq。 但是並沒有指出您的不滿。 請參閱下面的過濾鏈接, http://social.msdn.microsoft.com/Forums/en-US/cc3b0486-1031-4113-afb6-29dfa6e0319b/how-to-filter-a-datatable-dynamically-using-linq?論壇= linqprojectgeneral
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.