首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除除LINQ中的字符串外具有相同长度的字符串?

问如何删除除LINQ中的字符串外具有相同长度的字符串?
EN

Stack Overflow用户
提问于 2014-02-20 19:43:54
回答 3查看 209关注 0票数 0

我有一个按字符串长度排序的可枚举字符串序列(所有字符串都是大写的)。我如何按字母顺序排列这个序列,然后删除所有长度相同的字符串,除了LINQ中每个长度组中的一个字符串?

ORIEW DRERE EWKD OPPA LTS ERS YT GL HF应该是DRERE EWKD ERS GL

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-20 19:46:33

如果您的元素定义为:

代码语言:javascript
复制
string[] elements = new[]
           {
               "ORIEW",
               "DRERE",
               "EWKD",
               "OPPA",
               "LTS",
               "ERS",
               "YT",
               "GL",
               "HF"
           };

然后你可以使用:

代码语言:javascript
复制
var result = elements.OrderBy(r => r)
                    .GroupBy(r => r.Length)
                    .Select(grp => grp.First());

对于输出,可以使用:

代码语言:javascript
复制
foreach (var item in result)
{
    Console.WriteLine(item);
}

你会回来的:

代码语言:javascript
复制
DRERE
ERS
EWKD
GL

(请记住,按照您的顺序,您应该在ERS之前得到EWKD --不像问题中的那样)

票数 10
EN

Stack Overflow用户

发布于 2014-02-20 19:50:50

你可以这样做:

代码语言:javascript
复制
var myStrings = "ORIEW DRERE EWKD OPPA LTS ERS YT GL HF".Split(' ');

var myGroups = myStrings
    .OrderBy(x => x)
    .GroupBy(x => x.Length);

var result = myGroups
    .Select(x => x.First())
    .OrderBy(x => x.Length); // Or OrderByDescending if order is important.

result将包含:

代码语言:javascript
复制
GL 
ERS 
EWKD 
DRERE 
票数 3
EN

Stack Overflow用户

发布于 2014-02-20 20:08:58

代码语言:javascript
复制
var res1 = list.OrderByDescending(s => s.Length)
               .ThenBy(s => s)
               .GroupBy(s => s.Length)
               .Select(s => s.First())
               .ToList();

或者使用morelinq的DistinctBy

代码语言:javascript
复制
var res2 = list.OrderByDescending(s => s.Length)
               .ThenBy(s => s)
               .DistinctBy(s => s.Length)
               .ToList();

列表的内容:

代码语言:javascript
复制
DRERE 
EWKD 
ERS 
GL

如果输入不是List<string>,而是字符串,则可以将list形成为

代码语言:javascript
复制
string input = "ORIEW DRERE EWKD OPPA LTS ERS YT GL HF";
var list = input.Split();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21917935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档