需要Char []数组帮助

时间:2011-04-19 13:37:46

标签: c# .net linq string

我有一个来自数据库的对象集合,其中包含公司的标题。

我需要获得所有标题的第一个字母(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()];



        }
    }

3 个答案:

答案 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数组一样被索引寻址,你不需要转换它。