[英]Select a DataRow from a DataRow [] collection
我的代码:
DataRow[] row = ByTotalTemplate.Select("TEMPLATE_ID=" + DisTemplateID);
一行包含TEMPLATE_ID
, MIN_AMOUNT
, MAX_AMOUNT
和DISCOUNT
现在我想选择给定金额介于MIN_AMOUNT
和MAX_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.