似乎在尝试将类设置为我的linq变量时遇到问题:
这是从数据库中处理数据的类:
public class Result
{
public bool LongerThan10Seconds { get; set; }
public int Id { get; set; }
public DateTime CompletionTime { get; set; }
public double longitude { get; set; }
public double latitude { get; set; }
}
然后我使用这个LINQ语句来获取特定数据库中的数据:
foreach (var query in data.AssetStatusHistories
.Where(x => x.TimeStamp <= ft)
.Where(x => x.AssetID == guid))
{
if (lastResult != null)
{
if ((query.TimeStamp - lastResult.CompletionTime).TotalSeconds > 10)
{
dataResults.Add(new Result() { Id = query.ID,
longitude = query.Longitude,
latitude = query.Latitude });
}
lastResult = query; // <-- Error Is Here
}
}
错误是lastResult =查询,我一直得到无法隐式转换“Project.Data”到“Project.Result”有没有人有任何推荐的解决方案?
我已经看到了一些关于这个错误的内容,但没有专门针对LINQ。
答案 0 :(得分:4)
它确切地告诉您它的含义:您无法将Project.Data
转换为Project.Result
。
data.AssetStatusHistories.Where(x => x.TimeStamp <= ft)
.Where(x => x.AssetID == guid)
不返回Project.Result
个对象的集合,而是Project.Data
类型的对象。
修改强>
如果你的lastResult类型为Result
,我假设您只需输入:
lastResult = new Result(){Id = query.ID,
longitude = query.Longitude,
latitude = query.Latitude });
但在这种情况下它不起作用。这不是与linq相关的问题。您的lastResult
对象已分配到其他位置。如果要在末尾分配新的lastResult
对象,您希望从哪里获取CompletionTime
属性值?在我粘贴的代码中没有将它分配到任何地方。
答案 1 :(得分:0)
**lastResult = query;** <--Error Is Here
变量lastResult
可能属于IQueryable<Project.Result>
类型,但您要从IQueryable<Project.Data>
代码中加入data.AssetStatusHistories.Where(x => x.TimeStamp <= ft) .Where(x => x.AssetID == guid)
的集合。
基本上,这意味着无法将Project.Data
转换为Project.Result
。
尝试给我们提供更多Project.Data类的上下文,这样我们就可以看到你想要实现的目标了吗?在foreach循环之前发生了什么。你为什么要说lastResult=query
?
通过提供这些细节,我们可能会提供更多帮助!