Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq OrderedQueryAble错误_C#_Linq_Entity Framework - Fatal编程技术网

C# Linq OrderedQueryAble错误

C# Linq OrderedQueryAble错误,c#,linq,entity-framework,C#,Linq,Entity Framework,首先,我有一个类通过linq变量操作一些数据: public class Result { public bool LongerThan10Seconds { get; set; } public int Id { get; set; } public DateTime CompletionTime { get; set; } } 然后在一个单独的类中,我使用它从linq变量获取信息 using (var data = new ProjectEntities()) {

首先,我有一个类通过linq变量操作一些数据:

public class Result
{
    public bool LongerThan10Seconds { get; set; }
    public int Id { get; set; }
    public DateTime CompletionTime { get; set; }
}
然后在一个单独的类中,我使用它从linq变量获取信息

using (var data = new ProjectEntities())
{
    Result lastResult = null;
    List<Result> dataResults = new List<Result>();

    foreach(var subResult in data.Status.Select(x => x.ID).Distinct().Select(Id => data.Status.Where(x => x.ID == Id).OrderBy(x => x.Time)))
    {
        if (lastResult != null)
        {
            if (subResult.CompletionTime.Subtract(lastResult.CompletionTime).Seconds > 10)
                dataResults.Add(subResult);
        }
        lastResult = subResult;
    }
但是我得到了一个错误:

Linq.IOrderedQueryAble不包含“CompletionTime”的定义,并且没有接受“System.Linq.IOrderedQueryAble”类型的第一个参数的扩展方法“CompletionTime”

如果有人能够提供一个解决方案来解决这个问题,我们会非常感激。我们已经尝试了一段时间,但就DateTime变量而言似乎有点困难

您的问题是子结果包含IOrderedQueryable,可能是IOrderedQueryable,而不是结果

在data.Status.Selectx=>x.ID.Distinct.SelectId=>data.Status.Wherex=>x.ID==ID.OrderByx=>x.Time中的foreach:var子结果中有这个。注意Select:Id=>data.Status.Wherex=>x.Id==Id.OrderByx=>x.Time中的内容。这将返回IOrderedQueryable,而不是T,其中T是data.Status集合中的任何类型

您需要使用First或类似方法从IOrderedQueryable中获取单个值,如下所示: data.Status.Selectx=>x.ID.Distinct.SelectId=>data.Status.Wherex=>x.ID==ID.OrderByx=>x.Time.First中的var子结果

。。。或者将IEnumerable展平为IEnumerable: data.Status.Selectx=>x.ID.Distinct.SelectManyId=>data.Status.Wherex=>x.ID==ID.OrderByx=>x.Time中的var子结果


编辑:在C不确定var子结果是什么类型的情况下,您可能也会遇到问题。如果它们都是结果类型对象,请尝试将var subResult替换为Result subResult。

看起来您必须使用SelectMany来代替第二次Select方法调用

data.Status.Select(x => x.ID).Distinct()
    .SelectMany(Id => data.Status.Where(x => x.ID == Id).OrderBy(x => x.Time))

您好,我尝试使用第一个方法,但我似乎仍然得到相同的错误,并且无法识别completionTime方法。您可能需要指定subResult的类型为Result。请参阅编辑。您好,很好的建议我刚刚收到一个错误,foreach语句无法从状态转换为Result@CatLikeOlive0data.Status实际上包含什么?它包含数据库实体objectHi,如下所示。我尝试了此解决方案,但仍然得到错误,似乎CompletionTime方法未被识别。它是您的实际类型子结果变量?它只是一个标准的linq varvar,只是一个语法糖,用于不指定实际变量类型,而是从表达式的左侧部分计算其类型。根据您在另一个线程中的回答,linq表达式返回状态对象列表,但您希望获得结果对象列表。那么,您的状态结果在哪里?Status类是否具有结果类型的属性?Status是数据库对象,其中as Result是im用于处理特定数据的类