代码之家  ›  专栏  ›  技术社区  ›  Praveen Rai

选择对类型的查询,使用LINQ将其转换为子类型

  •  1
  • Praveen Rai  · 技术社区  · 7 年前

    我正在开发一个ASP.NET核心项目,我有一个模型,如下所示:

    Class abcde
    {
       int a {get;set;}
       int b {get;set;}
       int c {get;set;}
       int d {get;set;}
       int d {get;set;}
    }
    

    在特定的视图中,我只需要上面定义的模型的属性A和B。所以,我只定义了一个viewModel类(进入不同的名称空间),如下所示:

    Class ab
    {
       int a {get;set;}
       int b {get;set;}
    }
    

    现在在控制器中,我正在进行一个select查询,我打算只选择a和b属性。因为这些是我要在视图中显示的唯一属性。所以,基本上我的问题是:

    var objects = _context.abcde.Select( x=> new {x.a, x.b}).ToArray()
    

    这里的问题是我得到了一个匿名类型的数组,我需要手动映射到我的viewModel类AB。在这种情况下,我必须有一个循环来手动将每个结果集转换为viewModel。

    查看select函数的签名

    可枚举。选择源,treult

    看起来,函数本身可以进行转换,但我找不到任何示例。我可能想错了。你能提出处理这种情况的方法吗?我相信这将是非常常见的情况。事先谢谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   CodeNotFound dotnetstep    7 年前

    ab

    x => new ab() { a = x.a, b = x.b }
    

    x => new { x.a, x.b }
    

    var objects = _context.abcde.Select(x => new ab { a = x.a, b = x.b }).ToArray()