2015-12-06 62 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()

相關問題