我有以下DataTable
条记录: -
我想显示Rows
列没有HeaderPrintOrder
作为值的0
。在PDF单元格中,我必须通过迭代到具有上述条件的记录来打印FieldName
:Amount
。
我正在尝试下面的代码,给我错误Cannot interpret token '!'
。这样做的正确方法是什么?
var datatable = new DataTable();
datatable.Load(reader);
DataRow[] HeadingFields = datatable.Select("HeaderPrintOrder != 0");
foreach (var item in HeadingFields)
{
cellHead = new PdfPCell(new Phrase(HeadingFields[item]["FieldName"].ToString() + " : " + HeadingFields[item]["Amount"].ToString(), fntTableFont));
cellHead.Colspan = 3;
MainTable.AddCell(cellHead);
}
答案 0 :(得分:3)
使用LINQ很容易:
var filtered = datatable.AsEnumerable()
.Where(row => row.Field<int>("HeaderPrintOrder") != 0);
foreach(DataRow row in filtered)
{
// ....
}
使用DataTable.Select
,您必须使用<>
代替!=
:
DataRow[] HeadingFields = datatable.Select("HeaderPrintOrder <> 0");
支持 <>
,而!=
则不支持。你可以在这里看到:
http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression%28v=vs.110%29.aspx
答案 1 :(得分:0)
尝试使用Linq:
var HeadingFields= from row in datatable .AsEnumerable()
where row.Field<int>("HeaderPrintOrder") <> (int)(0)
select row;
答案 2 :(得分:0)
RowFilter语法不支持!=运算符。
尝试:
DataRow[] HeadingFields = datatable.Select("NOT (HeaderPrintOrder = 0)");