代码之家  ›  专栏  ›  技术社区  ›  LicenseQ

LINQ中的等号

  •  1
  • LicenseQ  · 技术社区  · 17 年前

    SQL Server执行基于查询的collate选项,因此可以定义如何执行比较(区分大小写)。您可以在创建表或查询执行过程中执行此操作。

    如何在LINQ to SQL查询期间控制排序规则?当我要做的时候,我的询问总是不敏感吗? table.Column == stringValue 比较?

    2 回复  |  直到 17 年前
        1
  •  3
  •   Amy B    17 年前

    我不怎么使用collate选项,但我会尽我最大的努力解决这个问题。

    根据这个 article :

    Linq to SQL在转换查询时不考虑服务器设置。

    如果collate是一个数据库/表/列设置,那么它应该只在数据库中设置,并在连接时准备就绪。

    如果collate是连接设置,则可以获取DataContext的连接并运行命令来设置它。这样做的好地方可能在 partial void OnCreated 方法。

        2
  •  -2
  •   Mike_G    17 年前

    您必须记住,L2S是一个对象关系映射系统,因此它试图比较对象并转换为SQL。在L2s中,如果要比较两个字符串,则必须同时tolower()进行比较。

    另一件对我来说是“gotcha”的事情是,在L2S中,如果您提供的比较值为空,字符串比较将无法正确计算。因此,在您的示例中,如果table.column为空,StringValue也为空,则查询将不会返回正确的结果(我基于这样的假设,即StringValue是在代码中定义的变量)。为了在L2s中将字符串与空进行比较,必须将其显式与空进行比较:table.column==null。

    看看这个 article