我不会摆弄表达式语法,而是使用 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.Select
在DataRow[]