【问题标题】:Char[] array help needed需要 Char[] 数组帮助
【发布时间】:2011-04-19 13:37:46
【问题描述】:

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

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



        }
    }

【问题讨论】:

  • 有什么问题(除了你的代码没有返回任何东西)?
  • 与其说您需要多少帮助(“大量”),不如告诉我们您的问题是什么。问题标题应该描述问题。作为一般经验法则,我们都不关心有多少您需要帮助。但是,如果您描述了问题并且我们能够解决它,那些能够提供帮助的人会这样做。
  • 这似乎是一个家庭作业。
  • 对不起! “Massive”是俄语中的“数组”!!!所以我的问题重制看起来需要 Char[] 数组帮助。 ))) 对不起!
  • 哈!我刚去谷歌翻译验证一下,它们听起来几乎一样。

标签: c# .net linq string


【解决方案1】:

将最后一行替换为:

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”。

【讨论】:

    【解决方案2】:
    return resultBrands.Distinct().ToArray();
    

    但是,这可能不会完全按照您想要的方式工作,因为Distinct 原则上可以更改元素的顺序。我会从 sql 语句中删除 orderby 语句并使用:

    return resultBrands.Distinct().OrderBy(c => c).ToArray();
    

    【讨论】:

      【解决方案3】:

      好的,其他人已经说过了。不过,您可以改进这部分:

        var resultBrands =
                      from brands in dc.Brands
                      orderby brands.Title ascending
                      select brands.Title[0];
      

      字符串已经可以像 char 数组一样通过索引寻址,你不需要转换它。

      【讨论】:

        猜你喜欢
        • 2016-05-15
        • 1970-01-01
        • 2013-12-08
        • 2021-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多