c# - LINQ 在列表中选择列表

标签 c# linq list

我正在尝试使用 LINQ 查询我的数据库来填充列表中的列表。

我面临的问题是我不确定如何将数据选择到子列表中。

当尝试执行下面的代码时,我收到错误

Error 1 Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Collections.Generic.IEnumerable'. An explicit conversion exists (are you missing a cast?)

模型类是这样的:

public class _LayoutViewModel
{
    public List<CallGuideMenuL1> CGL1 { get; set; }
}

public class CallGuideMenuL1
{
    public string Area { get; set; }
    public List<CallGuideMenuL2> Products { get; set; }
}

public class CallGuideMenuL2
{
    public int CallGuideProductId { get; set; }
    public string Product { get; set; }
}

和数据库上下文:

public class CallGuideArea
{
    public int CallGuideAreaId { get; set; }
    public string Area { get; set; }
    public List<CallGuideProduct> CallGuideProducts { get; set; }
}

public class CallGuideProduct
{
    public int CallGuideProductId { get; set; }
    public string Product { get; set; }
    public int CallGuideAreaId { get; set; }
    public DateTime Added { get; set; }
    public DateTime? Deleted { get; set; }
}

在我的 Controller 中,我尝试像这样选择数据:

_LayoutViewModel vm = new _LayoutViewModel();

vm.CGL1 = from a in db.CallGuideArea
            .SelectMany(p => p.CallGuideProducts)
            select a;

我很确定这是 select a; 行的问题,因为我需要将数据分配回 CallGuideMenuL1CallGuideMenuL2 的属性

有人可以围绕正确的 LINQ 表达式为我指明正确的方向吗?

最佳答案

vm.CGL1 = db.CallGuideArea.Select(a => new CallGuideMenuL1()
{
    Area = a.Area,
    Products = a.CallGuideProducts.Select(p => new CallGuideMenuL2()
    {
        CallGuideProductId = p.CallGuideProductId,
        Product = p.Product
    }).ToList()
}).ToList();

关于c# - LINQ 在列表中选择列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718898/

相关文章:

c# - WCF 和 FluentNHibernate

c# - 如何创建为 SelectMany resultSelector 返回匿名类型的 C# LambdaExpression

Android:保存int列表的最有效方法

python - 获取没有 len(list) 的上一个对象

c# - 我是否需要考虑处置我使用的任何 IEnumerable<T>?

javascript - 用于获取消息标题的插件

linq - 我可以使用此方法从数据库中获取值而不生成附加文本吗?

c# - INotifyCollectionChanged 的​​ NewItems - 不能使用 OfType<T> 获取数据

python - 在遍历列表时在数据框的一行中添加多个值

c# - JObject 错误 "Property with the same name already exists on object"