c# - LINQ 查询 Bool+String 对列表。如何在没有 foreach 的情况下连接字符串?

标签 c# string linq foreach concatenation

对对象的 LINQ 查询有一些疑问...

我有这个我想保密的过滤器描述,并且在代码中的给定检查点,我设置了一些事件标志。在处理结束时,我想过滤事件标志。

如果有任何标志处于事件状态,我想将它们写入控制台。 (我希望所有标记的检查点都在一个字符串中,这样我以后或许可以更改代码以抛出异常)。

这是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml;

namespace checkpoints
{
    public class Program
    {
        public static void Main(string[] args)
        {            
            var filters = new Filters().FilterList;

            filters[0].flag = true;
            filters[2].flag = true;

            var query = filters.Where(f => f.flag).Select(f => f.desc); 
            Console.WriteLine("Filter points active: ");
            string fpoints = System.String.Empty;

            foreach(string fp in query)
                { fpoints = fpoints + fp + System.Environment.NewLine; }

            Console.WriteLine(fpoints);
        }
    }
    public class Filters
    {        
        public List<Filter> FilterList = new List<Filter>{};

        public Filters()
        {
           foreach(var def in Filters.def_desc)               
               { this.FilterList.Add(new Filter(false, def)); }
        }

        private readonly static string[] def_desc = new string[3]
        { "Filter AX2123: Failed file write.", 
          "Filter XVB231: Failed table load.", 
          "Filter FZD358: Transaction halted." };

        public class Filter
        {
            public bool flag;
            public readonly string desc;       

            public Filter(bool flag, string desc)
            {
                this.flag = flag;
                this.desc = desc;
            }
        }            

    }
}

它有效。我的问题是需要对 LINQ 查询结果(我猜是 IEnumerable<Filter>)运行 for each 以提取字符串。如果我已经运行了一个查询(即遍历了所有代码),为什么我需要“再次运行”?看起来它的比例很糟糕而且不是很优雅......有什么想法吗?

最佳答案

string fpoint=query.Aggregate((c, c1) => c + System.Environment.NewLine+ c1 );

关于c# - LINQ 查询 Bool+String 对列表。如何在没有 foreach 的情况下连接字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8569429/

相关文章:

c# - Entity Framework 距离查询

c# - 使用 Jquery Ajax 将模型和 2 个复选框列表发布到 Controller

c - C中的指针初始化和字符串操作

c# - ToDictionary中的KeyValuePair解构

c# - 在 LINQ 查询中使用 "contains"时检查列表是否不为空,否则选择所有记录

c# - 使用EF4仅获得SQL表的最后一行的最有效方法是什么?

c# - 对 Web 控件进行单元测试时出现空错误

c# 泛型无法将源类型转换为目标类型

java - 如果索引值超出整数,如何使用String.substring?

python - 将日期时间列转换为字符串列