【问题标题】:Multiple Select Linq Query多选 Linq 查询
【发布时间】:2020-06-19 08:48:10
【问题描述】:

有没有办法使用.Select() 查询选择多个属性?

像这样的

model.Owners = eventResponse.Records.Select(x => x.Owner.Name && x.Subject).ToList();

现在我知道语法不起作用并且它是伪代码,但是有没有办法做一些产生相同结果的事情?

【问题讨论】:

  • 您是在内部某处使用它还是作为返回值之类的东西?
  • 返回一个值。我将其设置为另一个模型属性,这就是问题
  • 而且我还需要在 foreach 视图中循环它们,这是另一项任务,因为它依赖于 this 的格式...
  • 能否添加源模型和目标模型的代码?

标签: c# linq model-view-controller model


【解决方案1】:

是的。如果它是通过外键连接的,那么您应该需要使用 .include 扩展名。它确实有效,尤其是对于伪代码。

model.Owners = eventResponse.Records.include("Owner").Select(x => x.Owner.Name && x.Subject).ToList();

【讨论】:

    【解决方案2】:

    你应该使用匿名类型:

    model.Owners = eventResponse.Records.Select(x => new {Name = x.Owner.Name, Subject = x.Subject)).ToList();
    

    【讨论】:

      【解决方案3】:

      您可以创建匿名类型或元组:

      eventResponse.Records.Select(x => new { Name = x.Owner.Name, Subject = x.Subject }).ToList();
      

      或者……

      eventResponse.Records.Select(x => (Name: x.Owner.Name, Subject: x.Subject)).ToList();
      

      【讨论】:

        【解决方案4】:

        你可以使用这样的元组:

        model.Owners = eventResponse.Records.Select(x => (x.Owner.Name, x.Subject)).ToList();
        

        【讨论】:

        • 我会这样做,除非该值将从方法中返回。如果是这样的话,我建议创建一个新模型来代替它。
        • 你是对的,但例如对于私有方法,我也认为命名元组是一个很好的候选者。
        • 公平点,我应该澄清它是否返回这些值并且可以公开访问。命名元组适用于私有的东西。
        • 是的,我会将这些值设置为等于另一个模型属性。这些都是很好的建议,但我一直遇到转换错误。我无法将 blah blah 类型转换为 blah blah 类型。
        猜你喜欢
        • 2019-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多