【问题标题】:linq to sql, begin with querylinq to sql,从查询开始
【发布时间】:2013-04-02 13:39:09
【问题描述】:

我有一个语言表:

LangId LangName
1       English
2       EngTest
3       Germany

我想编写一个显示 LangName 以“Eng”开头的查询

var query = dc.Languages.Where(p=>p.LangName.Contains(txtBxLangNameFilter.Text));

我是 linq to sql 的新手。谁能教我怎么写?

【问题讨论】:

    标签: c# .net sql linq


    【解决方案1】:

    Contains 测试是否在任意位置的字符串中找到字符串。由于您要测试以某个字符串开头的字符串,请使用StartsWith()

    var query = dc.Languages
                  .Where(p => p.LangName.StartsWith(txtBxLangNameFilter.Text));
    

    【讨论】:

    • IIRC, StartsWith 如果使用NotSupportedException 转换为 SQL,则可能会失败。
    • @GrantThomas StartsWith 将被翻译成 LIKE
    • 看不到(工作网络),但我不认为“是”或“否”在这里是硬性规定。
    • @JW:那不是 LINQ to SQL。那只是LINQ。当然,直接 LINQ 支持它,但是 LINQ to SQL 在后端转换为 SQL。您的测试未转换为 SQL。
    【解决方案2】:

    您想将Contains 更改为StartsWith

    【讨论】:

      【解决方案3】:

      使用 StartsWith 而不是 Contains

      var query = dc.Languages.Where(p=>p.LangName.StartsWith(txtBxLangNameFilter.Text));
      

      【讨论】:

        【解决方案4】:

        在这里使用StartsWith() 方法是您最好的选择。

        【讨论】:

          【解决方案5】:
          var Lang= from language in  dc.Languages
                      where language.LangName.StartsWith("Eng")
                      select  language.LangName;
          

          【讨论】:

            猜你喜欢
            • 2010-12-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-03
            相关资源
            最近更新 更多