微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比较字符串列和整数列

如何解决比较字符串列和整数列

| 我正在使用现有数据库进行EF CTP5 Code First开发。我需要通过比较不同类型的列从两个表中获取数据。 例如-这里
p.ColumnA
varchar
q.ColumnA
int
,但是对于很少的记录,值可能相同。因此,我正在尝试执行
Convert.ToInt32
,但这是行不通的。我没有完全控制数据库修改表的权限。
from p in context.TableA
from q in context.TableB
where p.ColumnZ == \"ABC\" &&
  (p.ColumnA == null || Convert.ToInt32(p.ColumnA) == q.ColumnA) &&
  (p.ColumnB == null || p.ColumnB == q.ColumnB)
select p.ColumnC
有人可以提出解决方案吗?谢谢。     

解决方法

        当您编写与实体框架进行交互的linq语句时,它将尝试将所有命令转换为SQL。因为没有用于Convert.ToInt32的sql命令,它将引发错误。  这篇文章描述了一种校准SQL函数以转换类型的方法。它应该可以帮助您。     ,        正如其他张贴者所解释的那样,LINQ to SQL Entities不知道如何将“ 4”转换为SQL表达式(LINQ to SQL显然可以处理此问题)。据我所知,它也不支持
int.Parse
。但是由于您只是在进行相等比较(而不是大于/小于),因此应该能够将
int
转换为
string
,而不是将
string
转换为
int
,从而获得相同的结果。
from p in context.TableA
from q in context.TableB
where p.ColumnZ == \"ABC\" &&
  (p.ColumnA == null || p.ColumnA == q.ColumnA.ToString()) &&
  (p.ColumnB == null || p.ColumnB == q.ColumnB)
select p.ColumnC
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。