实体框架将字符串转换为Int

时间:2015-11-12 08:50:23

标签: c# entity-framework comparison

在我的查询的where子句中,我试图将包含varchar类型的列(包含数字)与预定的整数进行比较。我想要那些大于预定数量的那些。

根据我的研究,它无法做到这一点,因为SQL中没有标准功能。

有人可以建议我这样做吗?

***中的一行是我尝试进行比较的地方。 SVNREVISION是存储数字字符的字符串。

.Where(
    @t =>
    @t.@t.@t.@t.a.MAINTBRANCH == 197 && @t.e.FIELDID == 106011301 ***&& @t.@t.@t.@t.a.SVNREVISION > 42544***
    && (@t.@t.@t.@t.a.CSEBRANCHCHANGE ?? "") != ""
    && !(@t.@t.@t.@t.a.CSEBRANCHCHANGE ?? "").Contains("DF"))
.Select(
    @t =>

不幸的是,我无法更改SVNREVISION的数据类型。

1 个答案:

答案 0 :(得分:0)

您必须在内存中过滤 ,而不是将其转换为SQL语句。您可以通过强制实体框架在之前评估表达式,通过添加Where来调用ToList()方法:

.ToList()
.Where(
    @t =>
    @t.@t.@t.@t.a.MAINTBRANCH == 197 && @t.e.FIELDID == 106011301 && Convert.ToInt32(@t.@t.@t.@t.a.SVNREVISION) > 42544
    && (@t.@t.@t.@t.a.CSEBRANCHCHANGE ?? "") != ""
    && !(@t.@t.@t.@t.a.CSEBRANCHCHANGE ?? "").Contains("DF"))
.Select(
    @t =>