我可以将方法应用于IQueryable并将其转换为列表吗?

jam*_*art 3 c#

我正在尝试返回Obj1类型列表,但首先需要使用IQueryable LINQ语句来拉出这些Obj2类型,该语句为我提供了类型列表,并提供了一种方法,可以将它们转换为通过使用foreach循环应用的所需类型

public List<Obj1> GetObj1List(int id)
{
    List<Obj2> obj2List = Select(x => x.ObjTable.Where(a => a.Id == id)).ToList();
    List<Obj1> obj1List = new List<Obj1>();

    foreach(Obj2 o in obj2List)
    {
        obj1List.Add(MapObject2ToObject1(o, OtherMethod));
    }
    return obj1List;
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以包装我的Select语句以将MapObject2ToObject1方法应用到结果而无需foreach一行?

phu*_*uzi 6

应该很容易。

public List<Obj1> GetObj1List(int id)
{
    var obj1List = Select(x => x.ObjTable.Where(a => a.Id == id))
        .Select(o => MapObject2ToObject1(o, OtherMethod))
        .ToList();
    return obj1List;
}
Run Code Online (Sandbox Code Playgroud)

使用更新的方法签名进行了更新 MapObject2ToObject1