如何调试空的 LINQ 结果查询?

How to debug an empty LINQ result query?

我在我的存储库中添加了一个查询,用于查询与电子邮件搜索关键字匹配的订单列表。但是当我逐步执行该方法时,尽管电子邮件字符串与存储在我的订单数据库文档 "email": "brianvarley@gmail.com"

中的电子邮件匹配,但我的结果为空

我正在使用 MongoDB.Net driver 与 MongoLabs 存储库通信。我查询所有文档的其他查询都有效,所以似乎不是连接问题。

我尝试将鼠标悬停在 c.Email 上以检查数据库结果,但没有弹出值。

有谁知道如何进一步调试空结果?

这是邮箱查询订单的方法:

    public async Task<List<OrderModel>> GetAllByEmailAsync(string email)
    {
        if (orderList == null)
            await LoadDbAsync();
        return orderList.Where(c => c.Email == email).ToList();
    }

我添加了一个转储来检查 orderList 内容,但显示计数 = 0:

string dump = string.Join(",", orderList.ToString());

这是 LoadDBAsync(),当我单步执行代码时,由于 OrderList 不为空而跳过此方法:

    public async Task LoadDbAsync()
    {
        var orderCollection = StartConnection();

        try
        {
            orderList = await orderCollection.Find(new BsonDocument()).ToListAsync();

        }
        catch (MongoException ex)
        {
            //Log exception here:
            MessageBox.Show("A connection error occurred: " + ex.Message, "Connection Exception", MessageBoxButton.OK, MessageBoxImage.Warning);
        }
    }

以及从 LoadDbAsync 调用的 StartConnection()

    public IMongoCollection<OrderModel> StartConnection()
    {

        var client = new MongoClient(connectionString);
        var database = client.GetDatabase("orders");
        //Get a handle on the customers collection:
        var collection = database.GetCollection<OrderModel>("customer_orders");
        return collection;
    }

如果您的列表不是 null 而是空的,它永远不会 return 任何东西...更改您的代码:

public async Task<List<OrderModel>> GetAllByEmailAsync(string email)
{
    if (orderList == null || orderList.Count() == 0)
        await LoadDbAsync();
    return orderList.Where(c => c.Email == email).ToList();
}