将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();
我如何从查询中分离结果,以便我有两个元素的单个数组:一个用于类型,一个用于路由?
您的Select
-语句已经创建了一个存储在匿名类型实例中的双值项列表。所以不需要为它创建一个新的二维数组。你的linkdata
已经包含了你想要的数据,但是如果你在(Type, Route)
的一个特定组合之后,简单地分别调用linkedData[myIndex].Route
或linkedData[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)
这应该给你一个清晰的指示:)