Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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 to SQL中获取不同的列表_C#_Sql_Entity Framework_Linq To Sql - Fatal编程技术网

C# 如何在实体Linq to SQL中获取不同的列表

C# 如何在实体Linq to SQL中获取不同的列表,c#,sql,entity-framework,linq-to-sql,C#,Sql,Entity Framework,Linq To Sql,我有一个通用对象表,其中每个条目都有一个键和版本。所以你可能有 Object 1, version 1 Object 1, version 2 Object 1, version 3 Object 2, version 1 Object 2, version 2 如何请求返回每个对象的最高版本,即返回对象1的版本3和对象2的版本2?我不知道如何使用不同的查询,因为对象不匹配,它们有不同的版本,我想要每个对象的最高版本号 这是我目前的疑问 var dbObjects = _ob

我有一个通用对象表,其中每个条目都有一个键和版本。所以你可能有

Object 1, version 1  
Object 1, version 2  
Object 1, version 3  
Object 2, version 1  
Object 2, version 2
如何请求返回每个对象的最高版本,即返回对象1的版本3和对象2的版本2?我不知道如何使用不同的查询,因为对象不匹配,它们有不同的版本,我想要每个对象的最高版本号

这是我目前的疑问

 var dbObjects = _objectStoreRepository.GetDataObjects().OrderByDescending(d => d.Version).Where(d =>
                    d.ObjectKey.ToLower().Contains(objectKey) &&
                    ((d.Status.ToLower() == request.Status.ToLower()) || string.IsNullOrEmpty(request.Status)) &&
                    d.CreatedAt <= request.AsAtTime).ToList();
var dbObjects=\u objectStoreRepository.GetDataObjects().OrderByDescending(d=>d.Version)。其中(d=>
d、 ObjectKey.ToLower()包含(ObjectKey)&&
((d.Status.ToLower()==request.Status.ToLower())| | string.IsNullOrEmpty(request.Status))&&
d、 CreatedAt您将希望使用带有选择的:

var results = _objectStoreRepository
    .GetDataObjects()
    .Where(d 
        => d.ObjectKey.ToLower().Contains(objectKey) 
        && ((d.Status.ToLower() == request.Status.ToLower()) || string.IsNullOrEmpty(request.Status)) 
        && d.CreatedAt <= request.AsAtTime)
    .GroupBy(o => o.ObjectKey)
    .Select(g => g.OrderBy(x => x.Version).LastOrDefault())
    .ToList();
var results=\u objectStoreRepository
.GetDataObjects()
.在哪里
=>d.ObjectKey.ToLower()包含(ObjectKey)
&&((d.Status.ToLower()==request.Status.ToLower())| | string.IsNullOrEmpty(request.Status))
&&d.CreatedAt(o.ObjectKey)
.Select(g=>g.OrderBy(x=>x.Version).LastOrDefault()
.ToList();
首先,您按公共“键”对结果进行分组,然后分组后,我们按版本对该组中的结果进行排序,并采用最后一个或默认值。您可能需要更改选择/排序方式以适合您的确切数据