将LINQ结果根据列拆分为数组

本文关键字:拆分 数组 LINQ 结果 | 更新日期: 2023-09-27 18:15:13

我正在尝试使用LINQ到实体从单行中选择几列,然后将每列拆分为数组的自己的点。

我有LINQ查询得到我想要的结果,但我不知道如何将其分割成数组。我认为使用.ToArray()会工作,但它不会分割它们。

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

我如何从查询中分离结果,以便我有两个元素的单个数组:一个用于类型,一个用于路由?

将LINQ结果根据列拆分为数组

您的Select -语句已经创建了一个存储在匿名类型实例中的双值项列表。所以不需要为它创建一个新的二维数组。你的linkdata已经包含了你想要的数据,但是如果你在(Type, Route)的一个特定组合之后,简单地分别调用linkedData[myIndex].RoutelinkedData[myIndex].Type

编辑:如果你真的想要数组,那么以下应该可以工作:

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

它将给你一个数组的数组,其中每个元素本身包含一个包含两个元素的数组。

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

用List<>代替

这就是我要做的。

为Link Data创建一个公共类:

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)

这应该给你一个清晰的指示:)