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

时间:2015-12-07 14:35:51

标签: c# mongodb linq mongodb-.net-driver nosql

我已向我的存储库添加了一个查询,该查询查询与电子邮件搜索键匹配的订单列表。但是当我逐步完成该方法时,虽然电子邮件字符串与我的订单数据库文档[{1}}

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

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

debug result

我尝试将鼠标悬停在"email": "brianvarley@gmail.com"上,检查数据库结果,但没有弹出值。

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

这是通过电子邮件查询订单的方法:

c.Email

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

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

这是string dump = string.Join(",", orderList.ToString()); ,当我单步执行代码时,会跳过此方法,因为OrderList不是null:

LoadDBAsync()

从LoadDbAsync调用 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); } }

StartConnection()

1 个答案:

答案 0 :(得分:1)

如果您的列表不是null但是为空,则它将永远不会返回任何内容...更改您的代码:

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