【发布时间】:2020-12-09 15:49:46
【问题描述】:
我怎样才能把这个 linq 查询产生的任何东西放到我自己的 DataTable 类中?
public class MyDataTable : DataTable
{
public MyDataTable()
{
this.Columns.Add("ColumnName1");
this.Columns.Add("ColumnName2");
this.Columns.Add("ColumnName3");
this.Columns.Add("ColumnName4");
}
}
我的 linq 查询:
MasterDataTable
.AsEnumerable()
.Where(rr =>
rr.Field<string>("ColumnName1") == SelectedValue1 &&
rr.Field<string>("ColumnName2") == SelectedValue2 &&
rr.Field<string>("ColumnName3") == SelectedValue3 &&
rr.Field<string>("ColumnName4") == SelectedValue4)
).Select(rr => rr);
我已经尝试过了,但我被警告我无法将 EnumerableRowCollection 转换为 MyDataTable
MyDataTable dt = MasterDataTable
.AsEnumerable()
.Where(rr =>
rr.Field<string>("ColumnName1") == SelectedValue1 &&
rr.Field<string>("ColumnName2") == SelectedValue2 &&
rr.Field<string>("ColumnName3") == SelectedValue3 &&
rr.Field<string>("ColumnName4") == SelectedValue4)
).Select(rr => rr);
然后我尝试在 EnumerableRowCollection 中获取所有内容,但在这里我得到“嵌入语句不能是声明或标记语句”
EnumerableRowCollection<DataRow> selection = ConfigurationDataTable
.AsEnumerable()
.Where(rr =>
rr.Field<string>("ColumnName1") == SelectedValue1 &&
rr.Field<string>("ColumnName2") == SelectedValue2 &&
rr.Field<string>("ColumnName3") == SelectedValue3 &&
rr.Field<string>("ColumnName4") == SelectedValue4)
).Select(rr => rr);
我做错了什么?
【问题讨论】:
-
MasterDataTable是否与MyDataTable具有相同的列,或者是否有其他列未包含在MyDataTable中?如果是这样,您为什么觉得需要为MyDataTable创建自定义类? -
@pwilcox,是的,MasterDataTable 实际上只是包含所有数据的 MyDataTable 的一个实例。至于你的第二个问题:我实际上也在考虑同样的事情。从本质上讲,我并没有真正做任何特别的事情。我想我可以使用本机 DataTable 类。