我有一个来自数据库的对象集合,其中包含公司的标题。
我需要获得所有标题的第一个字母(char [])(.Distinct())。
目前我有类似的东西:
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()];
}
}
答案 0 :(得分:2)
用这个替换最后一行:
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'。
答案 1 :(得分:1)
return resultBrands.Distinct().ToArray();
但是,这可能无法完全按照您想要的方式工作,因为Distinct
原则上可以更改元素的顺序。我将从sql语句中删除orderby
语句并使用:
return resultBrands.Distinct().OrderBy(c => c).ToArray();
答案 2 :(得分:1)
好的其他人已经说过了。你可以改进这部分:
var resultBrands =
from brands in dc.Brands
orderby brands.Title ascending
select brands.Title[0];
字符串已经可以像char数组一样被索引寻址,你不需要转换它。