【发布时间】:2012-10-01 16:27:24
【问题描述】:
我有这个问题,我有一张桌子供购买
Purchases(Date DateTime, Number string)
我要的是新建一条记录,所以我需要Max(Number),这里的问题是Number是一个字符串,我试过了
Purchases.Select(X=>int.Parse(X.Number)).Max()
但它可能会引发异常,我创建了一个自定义的 ToInt() 扩展,所以当我使用时
Purchases.Select(X=>X.Number.ToInt()).Max()
它抛出一个异常,说我的 ToInt() 不能与著名的 ToString() 一样用于 linq 查询
所以我的问题是:有没有办法在 linq 查询中同时将字符串转换为 int 并处理异常,或者将自定义函数集成到 linq 查询中!!
这是我的扩展
public static int ToInt(this string s)
{
try
{
return int.Parse(s);
}
catch
{
}
return 0;
}
【问题讨论】:
-
Number字段在您的表中声明为string的任何原因? -
我们能看到你创建的扩展吗?
-
如果抛出异常,你如何处理?继续求和还是停止?
-
Parse仅在值不是数字时才抛出异常...为什么您有一个名为Number的字段实际上是一个甚至可能不代表数字的字符串! -
很抱歉,但请大家不要问为什么,请回答如何,因为我给出了最简单的情况,我的应用程序太复杂了,除此之外我别无选择数字(字符串)
标签: c# linq entity-framework