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 является узким местом в производительности.