簡體   English   中英

如何使用linq查詢過濾datatable列值

[英]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查詢。

  1. SELECT * FROM訂單其中VENDORID = 'ACETRAVE0001' 或VENDORID像 '一%' 或VENDORID = 'DOLECKIC0001' 或VENDORID像 'd%'

  2. 從DOCNUMBR> ='1000'和DOCNUMBR <='5000'的訂單中選擇*

  3. 從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM