如何在不枚举查询的情况下将字符串转换为int

时间:2015-04-22 12:50:30

标签: c# linq entity-framework

可能我是盲目的,但我无法找到如何将字符串转换为int。我写了

query.OrderByDescending(a => SqlFunctions.IsNumeric(
    a.Index.Substring(a.Index.Length - 4, 4)) == 1 ?
    Convert.ToInt32(a.Index.Substring(a.Index.Length - 4, 4)) :
    0);

但是,正如我所怀疑的,它会返回错误

  

LINQ to Entities无法识别方法' Int32   ToInt32(System.String)'

此外 SqlFunctions 没有成员转换。有没有办法实现这一点而不枚举查询?

编辑: int.Parse抛出

  

LINQ to Entities无法识别方法' Int32   解析(System.String)

4 个答案:

答案 0 :(得分:4)

这是一个很长的镜头,因为我自己没有尝试过(几周前我读过它)。

如果SqlFunctions类没有提供你需要的函数,你可以在SQL Server端创建一个自定义函数,然后在.NET端创建一个类,类似于SqlFunctions类来调用自定义函数。有一个属性,你必须使用。

来装饰.NET类

这样的事情可能有用吗?

您可以详细了解这个herehere

答案 1 :(得分:0)

int a=int.Parse(string);

是在c#

中将字符串转换为int的方法

答案 2 :(得分:0)

int.TryParse(X.Number, out tmp) ? tmp : 0

答案 3 :(得分:0)

您是否尝试过global $product; $attachment_ids = $product->get_gallery_attachment_ids(); echo '<div class="flexslider"><ul class="slides">'; foreach( $attachment_ids as $attachment_id ) { echo '<li>'; echo "<img src=".$image_link = wp_get_attachment_url( $attachment_id, 'large').">"; echo '<p>'; $attachment_meta = wp_get_attachment($attachment_id); echo $attachment_meta['caption']; echo '</p>'; echo '</li>'; } echo '</ul></div>'; ?像这样的东西:

TryParse

我总是将int number; query.OrderByDescending(a =>( int.TryParse(a.Item1.Substring(1, 2), out number) == true ? number: 0)); 与lambda表达式一起使用。