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

Linq to EF搜索不以字母开头的字符串

  •  1
  • ilivewithian  · 技术社区  · 14 年前

    我正在使用Linq to Entity Framework 4,我要做的是构建一个查询,查找所有不以字母开头的供应商实体,通常这些实体是数字,例如“第一选择”我认为这很简单,并写下:

    var letters = Enumerable.Range('A', 26).Select(x => (char)x);
    var results = from supplier in All()
                  where !letters.Contains(supplier.Name[0])
                  select supplier;
    
    return results.ToList();
    

    不幸的是,此操作失败,并出现错误:

    System.NotSupportedException`
    "Unable to create a constant value of type 'System.Char'. 
    Only primitive types ('such as Int32, String, and Guid') are supported in this context."
    

    2 回复  |  直到 14 年前
        1
  •  2
  •   Adam Robinson    14 年前

    改变

    var letters = Enumerable.Range('A', 26).Select(x => (char)x);
    

    var letters = Enumerable.Range('A', 26).Select(x => ((char)x).ToString());
    

    以及

    where !letters.Contains(supplier.Name[0])
    

    where !letters.Contains(supplier.Name.Substring(0, 1))
    
        2
  •  3
  •   LukeH    14 年前
    var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var results = from supplier in All()
                  where !letters.Contains(supplier.Name.Substring(0, 1))
                  select supplier;