我正在使用linq将数据集表转换为自定义对象:
var list = (from row in ds.Tables[0].AsEnumerable()
select new MyObj
{
Porp1 = row.Field<string>("field1"),
Prop2 = row.Field<string>("field2")
}).ToList();
如何检查具有特定名称的列是否存在,如果不存在,则分配空字符串?
答案 0 :(得分:3)
类似的东西:
row.Columns.Contains("...") ? row.Field<string>("field1") : string.Empty
更准确地说:
row.Table.Columns.Contains("...") ? row.Field<string>("field1") : string.Empty
答案 1 :(得分:0)
要检查列是否存在,您应该检查DataTable.Columns集合中是否存在列名,如下所示:
// Given a datatable named table:
bool columnExists = table.Columns.Contains("columnname");
或者,如果您使用.Net 4,则可以使用对动态类型的支持,以在列存在时返回列的值,并在任何其他情况下返回默认值。我刚才在博客上写过类似的内容:
http://blog.rag.no/post/Update-The-DataTable-meets-dynamic-improved.aspx
和
http://blog.rag.no/post/Creating-a-monster-The-DataTable-meets-dynamic.aspx