【问题标题】:getting InvalidOperationException while querying with AsQueryable in C#在 C# 中使用 AsQueryable 进行查询时出现 InvalidOperationException
【发布时间】:2015-07-18 23:43:45
【问题描述】:

我有一个实体类作为城市。

 [BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)]
        public string _id { get;  set; }
        public string city { get; set; }
        public Array loc { get; set; }
        public double pop { get; set; }
        public string state { get; set; }

我想用 AsQueryable() 类创建一个简单的查询。这是我的查询代码

string dbName = dao.dbName();
var db = mongo.GetDatabase(dbName);

using (mongo.RequestStart(db))
{
       var collection = db.GetCollection<City>("city");
       var query = collection.AsQueryable().First(c => c.city.Equals("VIENNA"));

       Console.WriteLine( query.ToString());
}

当我运行代码时,我得到一个像这样的 System.InvalidOperationException

“System.InvalidOperationException”类型的未处理异常 发生在 System.Core.dll

var query = collection.AsQueryable().First(c => c.city.Equals("VIENNA"));

线。谁能解释为什么我会得到这个异常并导致解决方案?

【问题讨论】:

  • 异常信息是什么?
  • 它说“序列不包含任何元素”。但我调试了数据库连接已成功完成,并且有一个集合是“城市”。
  • @vedat 这意味着collection 没有等于“VIENNA”的元素。请改用FirstOrDefault
  • @MártonMolnár 感谢您的回答。我认为第一个文件的城市字段是“维也纳”,但我知道第一个功能的功能是不同的。所以我用_id查询。
  • @Sohaty 感谢您的回答。

标签: c# linq mongodb asqueryable


【解决方案1】:

First 方法查找与作为参数传递的表达式匹配的第一个结果。当它没有找到任何东西时,它会抛出这个异常。如果您不确定该序列是否包含您要查找的元素,请使用FirstOrDefault。请参阅this 文章以获得精彩的总结。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多