gpt4 book ai didi

C# LINQ for tree oriented data structure of classes

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:23 24 4
gpt4 key购买 nike

我有一个列表,其中 myObj 有自己的对象列表,称为示例 mySubObj。对象 mySubObj 具有 Prop 字符串名称。

所以我想根据 mySubObj 中的 prop string Name 创建新的列表。

这段代码是我写的,但是好像是错的:

var por = msgs.Where(x => x.Parameters
.Where(p => p.ParameterName == s).Count() == 1);

任何人都可以帮助我使用 LINQ 吗?

编辑:这是完整的代码:

 foreach (string s in parameters)
{
using (StreamWriter streamWriter = new StreamWriter(outputFolder + "/" + s + ".xls"))
{
streamWriter.Write("No.\tMessage\tMS\tTime\tSC");

var por = (from m in msgs
from p in m.Parameters
where p.ParameterName == s
select m).Distinct();


List<string> headeri = new List<string>();
List<string> vrijednosti = new List<string>();

foreach (L3Message p in por)
{
foreach (Parameter pam in p.Parameters)
{
TraverseForHeaders(pam, ref headeri);
}
}

foreach (string head in headeri)
{
streamWriter.Write("\t" + head);
}
streamWriter.Write("\n");

编辑 2:

这是我的两个类(class),应该更具体一些:

public class L3Message
{
public int Number { get; set; }
public string MessageName { get; set; }
public string Device { get; set; }
public string Time { get; set; }
public string ScramblingCode { get; set; }

public List<Parameter> Parameters { get; set; }

public L3Message()
{
Parameters = new List<Parameter>();
}}

public class Parameter
{
public int numOfWhitespaces { get; set; }

public string ParameterName { get; set; }
public string ParameterValue { get; set; }

public Parameter Parent { get; set; }
public List<Parameter> SubParameters { get; set; }

public Parameter()
{
SubParameters = new List<Parameter>();
}


}

最佳答案

在您想要创建“树”的那一刻,除了您按名称指定的参数之外,所有参数都被删除,我是如何理解的。您应该为此创建消息的副本,因为如果不这样做,您将更改原始参数并且无法恢复“丢失”的参数(我这样说,因为您在评论中说过您希望它是临时的)。

因此,代码应该或多或少像这样:

        var por = (from m in messages
from p in m.Parameters
where p.ParameterName == s
select new L3Message { Number = m.Number, ..., Parameters = new List<Parameter> { p } }
);

您必须从消息中复制其他参数,而不是“...”。

综上所述,对于您遇到的任何问题,暂时删除这些属性似乎都是一个糟糕的解决方案。如果你想把它传递给另一个方法,你不能改变这个方法来告诉它应该查看的属性吗?

编辑:固定代码(第二次)

Edit2:再次修复了代码(现在重复的属性会导致额外的消息,另请参阅我的替代答案。

关于C# LINQ for tree oriented data structure of classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9957746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com