gpt4 book ai didi

c# - Linq查询结果到List集合

转载 作者:行者123 更新时间:2023-11-30 21:06:19 24 4
gpt4 key购买 nike

我使用下面的代码从两个表中获取记录,但我想将结果放在一个列表中。我使用了下面的代码,但是出现了这个错误:

Cannot implicitly convert type System.Collections.Generic.List<AnonymousType#1> to System.Collections.Generic.List<QuickRoutes.DAL.Route>

public List<Route> GetAllForUser(Guid userId)
{
// var result = new List<Route>();
aspnetdbDataContext aspdb = new aspnetdbDataContext();
List<Route> result = (from r in aspdb.Routes
where r.UserId == userId
join t in aspdb.TrackPoints on r.RouteId equals t.RouteFK
select t.TrackPointId,t.RouteFK,t.TrackTime,t.Longitude,t.Latitude,t.Elevation, r.SourceName).ToList();
return result;
}

编辑:

我想将我的查询与此类匹配:

namespace QuickRoutes.Entities
{
public enum RouteType
{
Route, Waypoints, Track
}

public sealed class Route
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime Time { get; set; }
public List<TrackPoint> TrackPoints { get; set; }
public Guid UserId { get; set; }
public string GpxData { get; set; }
public RouteType RouteType { get; set; }


public Route(int id)
{
Id = id;
TrackPoints = new List<TrackPoint>();
}
......

但是如果我把我的代码改成这个,它也不起作用

List<Route> result = (from r in aspdb.RouteLinqs
where r.UserId == userId
join t in aspdb.TrackPointlinqs on r.RouteId equals t.RouteFK
select r).ToList();

老实说,我想把这个用SQL写的函数改成LINQ,有什么更好的idea吗?

namespace QuickRoutes.Entities
{
public enum RouteType
{
Route, Waypoints, Track
}

public sealed class Route
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime Time { get; set; }
public List<TrackPoint> TrackPoints { get; set; }
public Guid UserId { get; set; }
public string GpxData { get; set; }
public RouteType RouteType { get; set; }


public Route(int id)
{
Id = id;
TrackPoints = new List<TrackPoint>();
}
......

最佳答案

这是因为您的投影(您选择的)与 Route 不同(您要返回的内容);

如果您希望返回 Route将您的选择更改为:

select r

如果你想返回你的联合投影,你必须创建一个新类型,然后返回:

例如:

public class RouteTrack
{
public TrackPointId ...
public RouteFK ...
public TrackTime ...
}

并返回 List<RouteTrack>从您的方法中,并将您的选择更改为:

select new RouteTrack { TrackPointId = t.TrackPointId .... }

关于c# - Linq查询结果到List集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11274490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com