代码之家  ›  专栏  ›  技术社区  ›  André Miranda

如何获取其名称以Linq to SQL中的数字开头的项?

  •  0
  • André Miranda  · 技术社区  · 16 年前

    如何获取产品列表,例如,他们的产品名称以数字开头?

    谢谢!!

    2 回复  |  直到 16 年前
        1
  •  1
  •   Randy Minder    16 年前

    一种方法是:

    products.where(n=>n.ProductName.SubString(0,1)>=“0”&&n.ProductName.SubString(0,1)<=“9”)

        2
  •  5
  •   jason    16 年前
    List<string> digits = Enumerable.Range(0, 10).Select(i => i.ToString()).ToList();
    var query = from p in db.Products
                where digits.Contains(p.productName.Substring(0, 1))
                select p;
    

    或者,将以下内容添加到DBML映射文件中:

    <Function Name="ISNUMERIC" IsComposable="true">
        <Parameter Name="Expression" Parameter="Expression" Type="System.String" DbType="NVarChar(4000)" />
        <Return Type="System.Boolean" DbType="BIT NOT NULL"/>
    </Function>
    

    然后你可以说:

    var query = from p in db.Products
                where db.ISNUMERIC(p.productName.Substring(0, 1))
                select p;
    

    您也可以在XML映射文件中执行此操作,但对于您手动定义的必需代码,我记不清头脑中的语法。 DataContext . 如果需要,请告诉我。

    我非常喜欢第一种方法,但可以看到使用SQL内置 ISNUMERIC 如果分析告诉我纯LINQ版本是性能瓶颈。