我有以下类:
public class Company { [BsonId] public string dealerId = null; public List<Dealer> dealers = new List<Dealer>(); } public class Dealer { public string dId = null; public int dIndex = -1; public List<AutoStore> stores = new List<AutoStore>(); } public class AutoStore { public string type = null; public Dictionary<string, object> data = new Dictionary<string, object>(); }
我能够存储公司在蒙戈类对象与插入()。问题是,当我搜索一个文件,并尝试使用LINQ上的列表与LT;> 项目。 。公司>()。凡(CPY =我不断地得到一个异常
I am able to store the Company class objects in Mongo with Insert(). The problem is when I search for a document and try to use LINQ on the List<> items. I constantly get an exception .
var query = collection.AsQueryable<Company>() .Where(cpy => cpy.dealers.Where(dlr => dlr.stores.Count == 1).Count() > 0) ;
运行这段代码中,我得到:
Running this code I get:
System.NotSupportedException:无法确定表达式的系列化信息:Enumerable.Count
System.NotSupportedException: Unable to determine the serialization information for the expression: Enumerable.Count
我刚开始使用的今天蒙戈,但我认为在 LINQ 支持是比较成熟的。谁能告诉我,如果我可以做一个嵌套数组查询像我和 C#和 LINQ ?
I just started using Mongo today, but I thought the LINQ support was more mature. Can anyone tell me if I can do a nested array query like I've done with C# andLINQ ?
当我删除其中()上的任何的列表与LT;> ,也没有抛出异常。
As soon as I remove the Where() on any of the List<> , that exception isn't thrown
推荐答案您的异常问题区域去是你的归宿之内做其中,语句。
Going by your exception the problem area is within where you are doing Where statements.
我在我的评论说。试着这样做:
As I said in my comment. Try to do:
var v = collection.AsQueryable<Company>().Where(cpy => cpy.Dealers.Any(dlr => dlr.Stores.Count == 1));目前您正在做的事情,如:
You are currently doing something like:
var dealers = collection.AsQueryable<Company>().Select(cpy => cpy.Dealers); var dealersWithStores = dealers.Where(dealer => dealer.Stores.Count == 1);
然后,您正在检查是否有任何通过调用计数和检查,如果是大于0,让您的布尔在那里设有专卖店经销商。所有这一切都与调用 IEnumerable.Any()。看看这个工程? :)
You are then checking if there are any dealers with stores by calling count and checking if that is more than 0 to get your bool in the where. All of this is the same as calling IEnumerable.Any(). See if this works? :)
更多推荐
不能使用LINQ的使用嵌套类List<>有关MongoDB C#
发布评论