【问题标题】:Need Linq Query Help需要 Linq 查询帮助
【发布时间】:2010-06-30 11:59:10
【问题描述】:

我有以下简单的 Linq 查询:

(from container in Container
join containerType in ContainerType on container.ContainerType equals containerType
where containerType.ContainerTypeID == 2
select container).Max (row => row.SerialNumber)

按原样,此查询工作正常。问题是 DB 中的 SerialNumber 是 nvarchar 类型。当 ContainerTypeID = 2 时,此列中的值将始终为整数,而不是零填充。因此,在不将所有序列号转换为整数的情况下执行 Max 是行不通的(例如,Max 会选择 '2' 而不是 '10')。所以,我的问题是,如何将 row.SerialNumber 的所有值转换为整数,以便 Max 可以找到最大的序列号?

【问题讨论】:

  • 你不能在对 Max 的调用中进行 int 转换吗...例如 Max(row => Convert.ToInt32(row.SerialNumber))?

标签: linq linq-to-sql


【解决方案1】:

我试着用这种方式投射,它奏效了。

(from container in Container
join containerType in ContainerType on container.ContainerType equals containerType
where containerType.ContainerTypeID == 2
select container).Max (row => Convert.ToInt32(row.SerialNumber))

但是如果row.SerialNumber中的值大于int或者无效值会导致异常。

【讨论】:

  • 谢谢,成功了!我担心我不能那样投射,因为我尝试使用 Parse 并得到了一个错误。
猜你喜欢
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多