我的代码:
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);但这并不管用。
发布于 2013-07-10 18:24:05
我不会纠结于表达式语法,而是使用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
发布于 2013-07-10 18:06:37
如果要使用Select()方法,则必须从DataTable中重新选择行
DataRow[] rowsBetween = ByTotalTemplate.Select("TEMPLATE_ID = " + DisTemplateID + " AND MIN_AMOUNT < " + qunatity + " AND MAX_AMOUNT > " + qunatity);发布于 2013-07-10 18:15:52
尝尝这个
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);https://stackoverflow.com/questions/17567830
复制相似问题