DataTable linq读取数据项时,如何判断列是否存在?

saybookcat 2015-01-23 04:50:05
我有如下的一段代码
其中,AutoAck,ManAck有可能是在数据库中不存在这两列,在转化数据时,是否有什么方法可以检测列不存在?

tempModel =
queryData.AsEnumerable().Select(item => new SendSuccessRatioModel
{
SuccessTransportCount = DecimalToLong(item.Field<Decimal?>("Result")),
ReceivedCount = item.Field<long>("Count"),
AutoAckCount = DecimalToLong(item.Field<Decimal?>("AutoAck")),
ManAckCount = DecimalToLong(item.Field<Decimal?>("ManAck"))
}).FirstOrDefault();
...全文
316 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
saybookcat 2015-01-23
引用 4 楼 Z65443344 的回复:
此外,如果有的表存在这两列,有的表不存在这两列,你写两个LINQ不好吗,非要用同一个LINQ去执行?? 那如果列名不一样你又要如何?
先这样 。懒的不行,不想写
回复
於黾 2015-01-23
此外,如果有的表存在这两列,有的表不存在这两列,你写两个LINQ不好吗,非要用同一个LINQ去执行?? 那如果列名不一样你又要如何?
回复
saybookcat 2015-01-23
引用 1 楼 diaodiaop 的回复:
首先.. 数据库的结构还没事还发生改变????这也太奇葩了.... 另外try catch可以解决你的问题
我找到方法了 ,为了偷懒 一套处理逻辑适配多个数据结构

tempModel =
                                    queryData.AsEnumerable().Select(item => new SendSuccessRatioModel
                                    {
                                        SuccessTransportCount = DecimalToLong(item.Field<Decimal?>("Result")),
                                        ReceivedCount = item.Field<long>("Count"),
                                        AutoAckCount =
                                            queryData.Columns.Contains("AutoAck")
                                                ? DecimalToLong(item.Field<Decimal?>("AutoAck"))
                                                : null,
                                        ManAckCount =
                                            queryData.Columns.Contains("ManAck")
                                                ? DecimalToLong(item.Field<Decimal?>("ManAck"))
                                                : null

                                    }).FirstOrDefault();
回复
於黾 2015-01-23
DataTable.Columns.Contains(列名) 判断这东西就行了啊 不是什么东西都必须用LINQ来解决的
回复
by_封爱 2015-01-23
首先.. 数据库的结构还没事还发生改变????这也太奇葩了.... 另外try catch可以解决你的问题
回复
发动态
发帖子
LINQ
创建于2007-12-13

8490

社区成员

.NET技术 LINQ
申请成为版主
社区公告
暂无公告