首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用StartsWith C#的过滤器列表

使用StartsWith C#的过滤器列表
EN

Stack Overflow用户
提问于 2019-03-01 06:38:59
回答 3查看 454关注 0票数 0

.txt文件中有一个单词列表。我只想在console中显示以字母“R”开头并保持字母顺序的单词。示例:'Rav‘'Ret’'Ril‘

        static void Main(string[] args)
        {
            StreamReader objReader = new StreamReader(
                @"C:\Users\thoma\Documents\Visual Studio 2019\Backup Files\data.txt");



            string orden = "";
            List<string> arrText = new List<string>();

            while (orden != null)
            {
                orden = objReader.ReadLine();
                if (orden != null) arrText.Add(orden);
            }
            objReader.Close();

           foreach (string sOutput in arrText)
                Console.WriteLine(sOutput);

            Console.WriteLine("Order alphabetically ascending press 'a': ");
            Console.WriteLine("Ordener descendant alphabetical press 'b': ");                       

            instruccion = Console.ReadLine();
            if (instruccion == "a"){
                var resultList = arrText.Where(o => o.StartsWith("r"));
                Console.WriteLine(resultList);    
//string ascending = string.Format("{0}{1}{0}", "'", string.Join("','", arrText.OrderBy(x => x)));


            }         
            Console.ReadLine();
        }
    }
}

这段代码给我的结果是'System.Linq.Enumerable+WhereListIterator

感谢您的帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-01 06:58:28

您必须迭代结果列表,就像前面对arrText值所做的那样。

static void Main(string[] args)
{
    string fileName = @"C:\Users\thoma\Documents\Visual Studio 2019\Backup Files\data.txt";
    var arrText = File.ReadLines(fileName).ToList();         

    foreach (string sOutput in arrText)
        Console.WriteLine(sOutput);

    Console.WriteLine("Order alphabetically ascending press 'a': ");
    Console.WriteLine("Ordener descendant alphabetical press 'b': ");                       

    var instruccion = Console.ReadLine();
    IEnumerable<string> resultList;
    if (instruccion == "a")
        resultList = arrText.Where(o => o.ToLower().StartsWith("r")).OrderBy(o => o);
    else if (instruccion == "b")
         resultList = arrText.Where(o => o.ToLower().StartsWith("r")).OrderByDescending(o => o);
    else
        resultList = Enumerable.Empty<string>();

    foreach(var item in resultList)
        Console.WriteLine(item);    

    Console.ReadLine();
}
票数 0
EN

Stack Overflow用户

发布于 2019-03-01 06:46:44

console.writeline只是打印对象的ToString()方法,在本例中是对象的名称。

您需要枚举结果...可能是这样的:

Console.WriteLine(string.Join(",", resultList))
票数 0
EN

Stack Overflow用户

发布于 2019-03-01 06:47:24

将一个可枚举对象传递给Console.WriteLine:

Console.WriteLine(resultList); 

但是您不想打印对象元素(容器),而是打印每个元素,因此您需要迭代结果并打印每个元素:

foreach(var element in resultList)
    Console.WriteLine(element);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54935400

复制
相关文章

相似问题

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