【问题标题】:Instantiate 2D Array with a LINQ Query使用 LINQ 查询实例化二维数组
【发布时间】:2011-05-04 11:38:33
【问题描述】:

我是 C# 新手,所以需要你的帮助。

我有一个包含很多行和 3 个制表符分隔字段的文件。我想读取每一行,从行中提取字段,并将提取的 3 个值推送到一个对象中。最后,我应该得到一个对象数组。数组的长度应等于文件中的行数。文件中的所有信息都应该包含在对象中。

例如文件

abcd pqrs mnop
asdf asdf asdf
poiu poiu poiu 
xcvx xcvb rtew
: : : :
: : : :
: : : :

这是我能想到的:


类定义

Class MyClass
{
   string field1;
   string field2;
   string field3;
}

主要

String[] Content = File.ReadAllLines("file.txt");

  var query = from line in Content
              let Parts = line.Split(Separators,StringSplitOptions.RemoveEmptyEntries)
                          select new MyClass
                                    {field1 = Parts[0],
                                     field2 = Parts[1],
                                     field3 = Parts[2],
                                     };

如何从中获取对象的 List 或 IEnumerable?

【问题讨论】:

    标签: c# linq


    【解决方案1】:
    var query = (from line in Content 
              let Parts = line.Split(Separators,StringSplitOptions.RemoveEmptyEntries) 
                          select new MyClass 
                                    {field1 = Parts[0], 
                                     field2 = Parts[1], 
                                     field3 = Parts[2], 
                                     }).ToList<MyClass>();
    

    就是这样。

    查询现在将是 List&lt;MyClass>

    【讨论】:

      【解决方案2】:

      您的代码已经为您提供了一个 IEnumerable&lt;MyClass&gt; 值(在 query 变量中)。
      如果你想要一个列表,你可以打电话给ToList()

      【讨论】:

      • 您好,如果您能帮我写代码,我将不胜感激。我无法得到的是我应该如何执行 LINQ 查询。使用 foreach?
      • @Deepak:LINQ 查询产生一个IEnumerable&lt;T&gt;,可以像任何其他集合一样处理。您可以使用普通的foreach 循环。
      • foreach(var x in query){//x.field1,x.field2...全部可访问}
      • 也尽量避免使用数组,列表是 C# 的新数组。查看stackoverflow.com/questions/2975426/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      相关资源
      最近更新 更多