【问题标题】:2 dimensional array to object in C# linq to sql [duplicate]二维数组到C#linq to sql中的对象[重复]
【发布时间】:2015-02-23 11:10:12
【问题描述】:

我有课

public class SomeClass {
            public string Name { get; set; }
            public string Age{get;set;}
        }

我声明了一个数组

string[,] testArray = { { "Vignesh", "25" },{"Raja","20"} };

我尝试使用 linq to sql 将 testArray 转换为 SomeClass[] 的对象 但是testArray.Select( 不会来。它说String[*,*] does not contain a definition for Select

var result = linqArray.Cast<string>().Select(x => x).ToArray();
            linqArray.Cast<string>()
 .Select(x => new SomeClass { Name =x, Age = x })
 .ToArray();

当我尝试这个时,结果如下所示

我什至尝试过类型转换,但没有成功

SomeClass[] list = (SomeClass[])linqArray;

【问题讨论】:

  • 我认为这需要更清楚一些,我很确定第二个 c# sn-p 不是正确的 c#
  • using System.Linq; ?
  • 一开始为什么要使用多维数组?
  • 是的@Sinatr 在那里
  • @netwer:这些问题通常是完整代码的精简版。在这种情况下,这可能有效,但实际上我猜SomeClass 可能有更多属性。 SomeClass 的性质对这个问题并不重要,只是它位于多维数组中。

标签: c# asp.net arrays linq


【解决方案1】:

这是因为多维数组不是IEnumerable&lt;T&gt;。首先你需要使用CastOfType方法将你的数组变成IEnumerable&lt;T&gt;,然后你可以使用Batch方法:

array.Cast<string>()
 .Batch(2)
 .Select(x => new SomeClass { Name = x.First(), Age = x.Last()) })
 .ToArray();

请注意,您需要添加对MoreLINQ 库的引用才能使用Batch 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2019-04-13
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多