我已向我的存储库添加了一个查询,该查询查询与电子邮件搜索键匹配的订单列表。但是当我逐步完成该方法时,虽然电子邮件字符串与我的订单数据库文档[{1}}
中存储的电子邮件相匹配,但我的结果为空我使用MongoDB.Net driver与MongoLabs存储库进行通信。我查询所有文档的其他查询是有效的,所以似乎不是连接问题。
我尝试将鼠标悬停在"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()
答案 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();
}