Chr*_*ård 4 .net c# linq-to-sql
我有一个项目,我通过第一个字母查询用户:
repository.GetAll().Where(q => q.BrukerIdent.StartsWith(letter.ToString())).ToList();
Run Code Online (Sandbox Code Playgroud)
..where repository.GetAll()返回一个IQueryable<Bruker>,BrukerIdent是一个包含用户名的字符串,并且letter是一个char值.这很好用,除了我还想让用户以数字开头.而且我不想按单独的数字排序.
我的脑子里大喊大叫StartsWith("\d")但据我所知,它不会这样.我还想过做一个10路OR条款,但这看起来像意大利面条,而且我不确定效率.
有没有"正确"的方式这样做?
Ale*_*lex 13
如果这是LINQ-to-SQL,你可以SqlMethods.Like在这里使用方法:
var result = repository
.GetAll()
.Where(q => SqlMethods.Like(q.BrukerIdent, "[0-9]%"))
.ToList();
Run Code Online (Sandbox Code Playgroud)
repository.GetAll().Where(q => Char.IsNumber(q.BrukerIdent[0]))
Run Code Online (Sandbox Code Playgroud)
var numbers = Enumerable
.Range(0, 10)
.Select(i => i.ToString(CultureInfo.InvariantCulture));
// var numbers = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );
// var numbers = HashSet<int> { ... };
var q = from b in repository.GetAll()
where numbers.Contains(b.BrukerIdent.FirstOrDefault())) //[0]
select b;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5884 次 |
| 最近记录: |