【问题标题】:How to compare int with string in linq where clause [duplicate]如何在linq where子句中将int与字符串进行比较[重复]
【发布时间】:2016-03-24 21:15:30
【问题描述】:

我有一个string 参数,我想将它与Linq query 中的intstring 进行比较。

var query=(from GRD in _tblMembers.GetQueryable()
           select new MembersModel
           {
               SchoolID = GRD.SchoolID,
               MemberID = GRD.MemberID,
               MemberReferenceID = GRD.MemberReferenceID,
               MemberTypeID = GRD.MemberTypeID,
               MemberNo = GRD.MemberNo,
               MemberName = GRD.MemberName,
               CellNo = GRD.CellNo,                                         
            }).Where(z => z.MemberName.Contains(param.sSearch) || z.MemberTypeID.Contains(param.sSearch)).ToString();

当我尝试使用ToString() 方法将数据库参数转换为字符串类型时,如下所示。

.Where(z => z.MemberName.Contains(param.sSearch) || z.MemberTypeID.ToString().Contains(param.sSearch)).ToString();

linq 抛出运行时异常。

LINQ to Entities 无法识别方法 'System.String ToString()' 方法,并且这个方法不能翻译成store 表达。

如何在 linq 查询中进行覆盖。

【问题讨论】:

    标签: c# entity-framework linq


    【解决方案1】:

    您可以使用SqlFunctions.StringConvert

    .Where(z => z.MemberName.Contains(param.sSearch) 
                || SqlFunctions.StringConvert((double)z.MemberTypeID).Contains(param.sSearch))
    .ToString();
    

    【讨论】:

    • var query = (from c in ctx.A where c.ID==cl select new Accoun { ex = c.Type }).Distinct(); 这里clint 而c.ID 是string 但我想以int 格式比较它们。我试过where Convert.ToInt32(c.ID)==cl,但得到invalid where condition错误
    猜你喜欢
    • 2012-11-27
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多