gpt4 book ai didi

c# - OrderBy 嵌入文档

转载 作者:可可西里 更新时间:2023-11-01 10:34:28 26 4
gpt4 key购买 nike

我正在尝试按嵌入文档中的值对结果进行排序。

考虑一个模型,例如:

public class Car
{
public Guid ID { get; set; }
public string Name { get; set; }

public IEnumerable<Passenger> Passengers { get; set; }
}

public class Passenger
{
public Guid ID { get; set; }
public virtual string Name { get; set; }
public virtual int Age { get; set; }
}

我正在尝试查询我的 Car 集合,并按 Passenger.Age 排序

我的查询类似于:

var results = (from car in _db.GetCollection<Car>("car").AsEnumerable()
from passenger in car.Passengers
where car.Name == "Ford"
orderby passenger.Age).ToList();

有了这个,我得到以下异常:

The SelectMany query operator is not supported.

这是可以理解的 C# mongo 驱动程序的限制。
有解决方法吗?

如果做不到这一点,我怎么能在我的 .ToList() 之后订购它们?

最佳答案

您可能可以使用 AsQueryable() 重写此代码以从 ToList() 返回一个 IEnumerable 集合,从中您可以然后进一步查询您要使用的任何 LINQ,而不仅仅是 MongoCollection 直接支持的操作:

var passengers = _db.GetCollection<Car>("car").AsQueryable().ToList()
.Where(car => car.Name == "Ford")
.SelectMany(ford => ford.Passengers)
.OrderBy(p => p.Age);

在这里您可以找到 directly supported LINQ operations for the MongoDb C# driver .

关于c# - OrderBy 嵌入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11434131/

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