【问题标题】:Linq Optional Where StringLinq 可选 Where 字符串
【发布时间】:2014-03-13 18:44:50
【问题描述】:

存储中的 SQL:

select * from Car_Company where (@id is null or ID=@id)

下一行对应的代码是什么(In Linq)

From A IN DB.Company Where (IIF(String.IsNullOrEmpty(TextBox1.Text),a.cNAME=TextBox1.Text)).ToList

【问题讨论】:

  • 尝试让您的 LINQ 进行编译。很难说出您正在尝试做什么以及您得到的错误/结果与您的问题不正确。

标签: vb.net linq-to-entities ado


【解决方案1】:

我建议您从 LINQ 语句中提取字符串评估并评估一次,然后在查询中使用评估值。此外,如果该值应该是一个数字,但您不能保证用户是否提供了一个数字,您需要先对其进行测试以确保您有一个数字以避免转换问题。您提供的 LINQ 查询不太有意义,因为 where 子句返回的字符串不是真/假结果。您需要将该值与数据行中的内容进行比较。我想你想要这样的东西:

Dim Id As Integer
If Integer.TryParse(TextBox1.Text, Id) Then
   Dim Query = From A IN DB.Company Where A.Id = Id
End If

【讨论】:

    【解决方案2】:

    完全不清楚...试试这个...

    (From A IN DB.Company Where IF(Not String.IsNullOrEmpty(TextBox1.Text), 
                                   A.cNAME=TextBox1.Text, 
                                   "Something else")).ToList
    

    【讨论】:

    • 谢谢 Mr(ElektroStudios) 错误代码:mscorlib.dll 中出现“System.NotSupportedException”类型的未处理异常附加信息:无法将“System.Boolean”类型转换为“System.Boolean”类型。目的'。 LINQ to Entities 仅支持转换 EDM 基元或枚举类型。
    • 好吧好吧,新代码((来自 A In db.Car_Company Where If(Not String.IsNullOrEmpty(TextBox1.Text), A.cName = TextBox1.Text, A.cName = A.cName )).ToList())
    • 列类型整数错误
    • Where 子句返回一个字符串,而不是布尔值。您需要将 If 子句的结果与某事(在 A 中?)进行比较。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2012-03-28
    相关资源
    最近更新 更多