问题描述
|
我有一个保存公司名称的数据库中的对象集合。
我需要获取所有已区分标题(.distinct())的首字母(char [])。
目前我有类似的东西:
public char[] GetBrandsAlphabet()
{
using (var dc = ReturnContext())
{
var resultBrands =
from brands in dc.Brands
orderby brands.Title ascending
select brands.Title.tochararray()[0];
char[] ret = new char[resultBrands.distinct().Count()];
}
}
解决方法
return resultBrands.Distinct().ToArray();
但是,这可能无法完全按照您想要的方式工作,因为Distinct
原则上可以更改元素的顺序。我将从sql语句中删除orderby
语句并使用:
return resultBrands.Distinct().OrderBy(c => c).ToArray();
,用以下内容替换最后一行:
char[] ret = resultBrands.Distinct().ToArray();
或者,嘿,用这种内胆代替其他所有东西呢?
char[] ret = (from brands in dc.Brands
select brands.Title.ToUpper[0]).Distinct().OrderBy(c => c).ToArray();
ToUpper
保证最终数组中不会同时包含\'A \'和\'a \'。,好,其他人已经说过了。但是,您可以改进此部分:
var resultBrands =
from brands in dc.Brands
orderby brands.Title ascending
select brands.Title[0];
字符串已经可以通过索引(例如char数组)进行寻址,您无需进行转换。