2010-11-12 55 views
2

我使用LINQ将数据集表到自定义对象:数据表转换成对象

var list = (from row in ds.Tables[0].AsEnumerable() 
      select new MyObj 
      { 
      Porp1 = row.Field<string>("field1"), 
      Prop2 = row.Field<string>("field2") 
      }).ToList(); 

如何检查与特定名称的列时存在,如果没有,分配空字符串?

回答

3

类似:

row.Columns.Contains("...") ? row.Field<string>("field1") : string.Empty 

更准确地说:

row.Table.Columns.Contains("...") ? row.Field<string>("field1") : string.Empty 
0

要检查列中存在,你应该检查是否列名在DataTable.Columns存在colleciton这样的:

// Given a datatable named table: 
bool columnExists = table.Columns.Contains("columnname"); 

另外,如果你在.Net 4上,你可以使用支持动态类型来ret如果列存在,则为列的值,在任何其他情况下为默认值。我的博客上讲述类似的东西,前一阵子:

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