9

私のコード:

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

行にはTEMPLATE_IDMIN_AMOUNTMAX_AMOUNTおよびが含まれますDISCOUNT

MIN_AMOUNT今、特定の金額が と の間にある行を選択したいMAX_AMOUNT

私はこれをやろうとしました:

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

しかし、これはうまくいきませんでした。

4

3 に答える 3

12

式の構文をいじる代わりに、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

ところで、あなたの問題は、あなたDataTable.SelectDataRow[]

于 2013-07-10T10:24:05.490 に答える
4

メソッドDataTableを使用する場合は、行を再度選択する必要がありますSelect()

DataRow[] rowsBetween = ByTotalTemplate.Select("TEMPLATE_ID = " + DisTemplateID + " AND MIN_AMOUNT < " + qunatity + " AND MAX_AMOUNT > " + qunatity);
于 2013-07-10T10:06:36.650 に答える