对对象的 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/