【问题标题】:How to save values in array with for each?如何为每个值保存数组中的值?
【发布时间】:2015-05-13 23:46:15
【问题描述】:

我是 C# 新手,我正在尝试保存从 XML 解析器读取的一些数据。数据读取正确,实际上我将它们塑造如下:

liveMatches.ForEach(match => Console.WriteLine(
            match.Id.ToString(),
            match.Name,
            match.Country,
            match.Historical_Data,
            match.Fixtures,
            match.Livescore,
            match.NumberOfMatches,
            match.LatestMatchResult
            ));

但现在我想创建一个包含八个单元格的数组,这些单元格将插入到其内容中,每个匹配项都会显示在控制台上。 谁能告诉我怎么做?

【问题讨论】:

  • 是的,具有以下结构的数组:ID - 名称 - 国家 - 历史 - 赛程 - 比分 - NumberOfMatch - LatestMatchResult
  • @YuvalItzchakov 可能更可能是一个字符串[,8] 或对象[,8],但如果不知道有多少匹配项,就很难知道第一名。
  • 你可以创建一个类Match,然后给这个类上面的8个属性,然后用你那里的代码创建一个List<Match>
  • 匹配是动态的……这就是我使用解析器的原因。

标签: c# arrays xml parsing


【解决方案1】:

试试这样的

           List<List<object>> results = new List<List<object>>();
            liveMatches.ForEach(match => results.Add( new object[] {
               match.Id.ToString(),
               match.Name,
               match.Country,
               match.Historical_Data,
               match.Fixtures,
               match.Livescore,
               match.NumberOfMatches,
               match.LatestMatchResult
            }));

【讨论】:

    【解决方案2】:

    创建一个类...

    public class Match
    {
       public string Id {get; set;}
       public string Name {get; set;}
       ....
    }
    

    然后,创建Match 的列表...

    var matches = liveMatches.Select(match => new Match {
                Id = match.Id.ToString(),
                Name = match.Name,
                etc
                }).ToList();
    

    我在这里是手写的,所以我不确定这是否正确,但大致是这样的。

    编辑:如果不能创建类型,可以使用...

    var matches = liveMatches.Select(match => new 
                {
                    Id = match.Id.ToString(),
                    Name = match.Name
                }).ToList();
    

    【讨论】:

      【解决方案3】:

      Create a lambda expression with a new anonymous type at runtime

      这应该可以回答您的问题。

      基本上,您将创建一个匿名对象,但您必须将其返回给某个对象;现在,没有任何东西被分配给 liveMatches 的结果,所以没有任何结果。我会做类似的事情:

      var Item = liveMatches
                        .Where(match => match != null)
                        .Select(match => new {
                        Id = match.Id.ToString(),
                        Name = match.Name
                        ...
                        )).ToList();
      

      根据 Sidewinder94 的评论编辑

      【讨论】:

      • 如果你有你的 ForEach 方法的 MSDN 文档,我会很感兴趣,因为我正在使用的并且我可以在 MSDN 上找到的那个不会返回任何东西:msdn.microsoft.com/en-us/library/bwabdf9z%28v=vs.110%29.aspx跨度>
      • 你说得对,我混淆了我的 lambda 调用。应该是 liveMatches.Where(match => match != null).Select(match => new { etc. })
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多