簡體   English   中英

從DataRow []集合中選擇DataRow

[英]Select a DataRow from a DataRow [] collection

我的代碼:

DataRow[] row = ByTotalTemplate.Select("TEMPLATE_ID=" + DisTemplateID);

一行包含TEMPLATE_IDMIN_AMOUNTMAX_AMOUNTDISCOUNT

現在我想選擇給定金額介於MIN_AMOUNTMAX_AMOUNT之間的行

我試着這樣做:

DataRow amountRow = row.Select("MIN_AMOUNT<" + quantity + " AND MAX_AMOUNT>" + quantity);

但這沒用。

而不是擺弄表達式語法我會使用Linq:

IEnumerable<DataRow> rows = ByTotalTemplate.AsEnumerable()
           .Where(r => r.Field<int>("TEMPLATE_ID") == DisTemplateID
                    && r.Field<int>("MIN_AMOUNT") < quantity
                    && r.Field<int>("MAX_AMOUNT") > quantity);

如果您想要一個帶有過濾結果的新DataTable:

DataTable table = rows.CopyToDataTable();

請注意,如果沒有行, CopyToDataTable會拋出異常,因為它必須從行派生列。 所以你必須先檢查一下。 你可以使用:

DataTable table = ByTotalTemplate.Clone();
if(rows.Any())
    table = rows.CopyToDataTable();

如果你想要一個數組:

DataRow[] rowArray = rows.ToArray();

如果你只想要第一行:

DataRow row = rows.FirstOrDefault(); // can be null if there is no matching row

順便說一下,你的問題是你在DataRow[]上使用DataTable.Select

如果要使用Select()方法,則必須再次從DataTable選擇行

DataRow[] rowsBetween = ByTotalTemplate.Select("TEMPLATE_ID = " + DisTemplateID + " AND MIN_AMOUNT < " + qunatity + " AND MAX_AMOUNT > " + qunatity);

試試這個

        DataRow[] row = ByTotalTemplate.Select("TEMPLATE_ID=" + DisTemplateID);
        //
        //some use of **row** here 
        //than after select record from **row**
        DataRow[] amountRow = row.CopyToDataTable().Select("MIN_AMOUNT < " + qunatity + " AND MAX_AMOUNT > " + qunatity);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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