如何返回List <foo>中匹配字段的所有元素?

时间:2015-12-06 21:30:35

标签: c# linq list types

我正在编写一个方法,该方法应该返回匹配电子邮件字段的Lis​​t中的所有记录。但是我当前的实现只返回第一个元素,因为我正在使用ToList();

我使用 intellisense 过滤了其他可用的方法并尝试使用return orderList.Where(c => c.Email == email).ToList();

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

但是我收到一条错误,指出它无法转换,因为结果不是List。我从中理解,结果不是类型列表,但我怎样才能返回列表。

  

错误30无法将类型'System.Collections.Generic.List'隐式转换为'MongoDBApp.Models.OrderModel'

任何人都知道如何返回完整的结果集?

这是目前只返回与电子邮件密钥匹配的第一个或默认元素的方法:

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

orderList是类型,OrderModel:

SRC="http://website.com/embed-bz874sdg1280ghsse750hse-828x178.html

1 个答案:

答案 0 :(得分: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()