2015-12-06 30 views
0

我正在编写一个方法,该方法应该返回匹配电子邮件字段的列表中的所有记录。但我目前的执行情况,我用.FirstOrDefault();如何返回列表中的所有元素匹配字段<Foo>?

我可以通过其他方法过滤使用智能感知和使用ToList();

return orderList.Where(c => c.Email == email).ToList(); 

试过只返回的第一个元素,但我得到一个错误,指出它由于结果不是List而无法转换。我从中明白,结果不是类型列表,而是如何返回列表。

错误30无法隐式转换类型“System.Collections.Generic.List”到“MongoDBApp.Models.OrderModel”

任何人都知道我可以返回完整的结果集?

这是目前仅返回匹配的电子邮件按键的第一或默认元素的方法:

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

而且orderList这类型的,OrderModel:

private static List<OrderModel> orderList = new List<OrderModel>(); 
+1

将您的GetByEmailAsync返回类型更改为任务>。这个错误并不是说结果不是一个列表,而是告诉你它不能将你要返回给一个OrderModel的OrderModel的列表 – KiwiPiet

回答

1

改变你的方法对此应该工作

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

随着您目前的实施async Task<OrderModel> GetByEmailAsync(string email),该方法需要返回一个单独的OrderModel,因此不能返回List<OrderModel>Where(...).ToList()

相关问题