如何在Linq To Sql中获取名称以数字开头的项目?

And*_*nda 0 linq-to-sql c#-3.0

我如何获得产品列表,例如,他们的productName以数字开头?

谢谢!!

jas*_*son 5

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;
Run Code Online (Sandbox Code Playgroud)

或者,将以下内容添加到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>
Run Code Online (Sandbox Code Playgroud)

然后你可以说:

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

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

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