我有一个字符串列表(产品名称),我需要从中创建一个"0-9","A","B"形式的产品索引(基于产品名称的first-char)... "Z".
我这样做:
Products.GroupBy(p => p.Name[0].ToUpper())
Run Code Online (Sandbox Code Playgroud)
但这对于以"0"开头的产品名称不起作用."9".
如何修改查询以将所有alpha分组到不同的组("A"..."Z"),以及所有数字组成一个组("0-9")?
你还没有说过你是使用LINQ to SQL还是LINQ to Objects或其他东西.在LINQ to Objects中我可能会使用:
Products.GroupBy(p = {
char c = p.Name[0];
return c >= '0' && c <= '9' ? '0' : char.ToUpper(c);
});
Run Code Online (Sandbox Code Playgroud)
(注意,ToUpper文化敏感,顺便说一下 - 目前尚不清楚这是否是你想要的.)
在LINQ to SQL中(不能使用块lambdas,因为它们不能转换为表达式树)我可能会使用一个let子句以不同的方式执行相同的操作:
var query = from product in products
let c = product.Name[0]
group product by c >= '0' && c <= '9' ? '0' : char.ToUpper(c);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1582 次 |
| 最近记录: |