根据列

时间:2015-09-30 13:48:46

标签: c# arrays linq

我试图使用LINQ to Entities从单行中选择几列,然后将每列拆分为它自己的数组点。

我有LINQ查询获得我想要的结果,但我无法弄清楚如何将其拆分为数组。我认为使用.ToArray()会起作用,但它并没有拆分它们。

var LinkData = db.Sections
                 .Where(s => s.ID == SectionID)
                 .Select(s => new
                 {
                    s.Type,
                    s.Route
                 }).ToArray();

如何从查询中分割结果,以便我有一个包含两个元素的数组:一个用于Type,一个用于Route?

3 个答案:

答案 0 :(得分:1)

您的Select - 语句已经创建了一个存储在$interval实例中的两个值项的列表。因此,无需为此创建新的二维数组。您的linkdata已经包含了您想要的数据,但如果您在(Type, Route)的一个特定组合之后,只需分别拨打linkedData[myIndex].RoutelinkedData[myIndex].Type

编辑:如果你真的想要数组,那么以下内容应该有效:

var arr = linkedData.Select(x => new[] { x.Rote, x.Type }).ToArray();

这将为您提供一个数组数组,其中每个元素本身都包含两个元素的数组。

答案 1 :(得分:1)

var section = db.Sections
                .Where(s => s.ID == SectionID)
                .Select(s => new
                {
                   s.Type,
                   s.Route
                 })
                .SingleOrDefault();
var LinkData = new [] {section.Type, section.Route};

答案 2 :(得分:0)

使用列表<>代替

多数民众赞成我会做的事。

创建一个公共类的链接数据,所以:

public class LinkData
{
    public string type {get; set;}
    public string Route {get;set;}
}

然后在你的代码中 创建链接数据列表:

List<LinkData> LinkDataList = new List<LinkData>();

然后创建一个对象

LinkData obj = new LinkData

add stuff to the object 
obj.type = db.Section.Where(s => s.ID==SectionID).Select s=> s.Type new s.Type).SingleOrDefault();
obj.Route = db.Section.Where(s => s.ID==SectionID).Select s=> s.Route new s.Type).SingleOrDefault();;
LinkDataList.Add(obj)

这应该可以清楚地表明什么:)