【问题标题】:Select an attribute from object in a List inside another List从另一个列表中的列表中的对象中选择一个属性
【发布时间】:2014-07-31 16:45:39
【问题描述】:

我可以使用三元运算符执行选择以从列表中的对象获取属性吗?

这是我的模型:

public class Xpto
{
    public List<Son> Sons { get; set; }
}

public class Son
{
    public string Names { get; set; }
}

在这里,我想为我拥有的每个儿子获取“姓名”属性:

var result = (from a in mylist
          select new
          {
              sonsNames = a.Sons == null : <What should i put here?>
          }).ToList<object>();

我试过Sons.ToString(),但它会打印一个对象引用。

我想在“sonsNames”中有一个字符串列表,每个名称用“,”分隔。示例:sonsName: 'george, john'。

【问题讨论】:

  • [在这里我想为我拥有的每个儿子获取“姓名”属性];好的,这是否意味着您希望myList 中的每一行都将它们串在一起?此外,myList 是什么?您想为每个 Son 设置不同的行吗?
  • 除非您告诉我们那些a.Sons 为空的对象应该放什么,否则我们不能说“放在那里”什么。
  • 我想用 ',' 分隔每个 Name ... 示例:sonsNames: 'george,john'
  • 我会推荐使用 string.Join(): string names = string.Join(",", Xpto.Sons.Select(s => s.Names).ToArray());跨度>
  • 你知道,我很想回答这个问题。我真的会。但我相信最好还是教你钓鱼。首先,您需要知道如何将一组字符串 (google.com/…) 串在一起,然后如何在 select (google.com/…) 中找到那组字符串 ... PSST,第 4 个在第二个查询真的很有帮助。

标签: c# select


【解决方案1】:

这个呢?

//set up a collection

   var xptos = new List<Xpto>() 
            { new Xpto() 
            { Sons = new List<Son> 
                { new Son() { Names = "test1" },
                  new Son() { Names = "test2" } 
                }
            },
          new Xpto() 
          {
             Sons = new List<Son> {
             new Son() { Names = "test3" } 
           }
           }};    

 //select the names
var names = xptos.SelectMany(r => r.Sons).Where(k => k.Names != null)
           .Select(r => r.Names + ",") .ToList();

names.ForEach(n => Console.WriteLine(n));

Here's more info on SelectMany()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2023-03-18
    • 2022-01-05
    • 1970-01-01
    • 2011-03-30
    • 2021-08-10
    • 2011-04-25
    相关资源
    最近更新 更多