无法隐式转换类型';System.Collections.Generic.IEnumerable<;字符串&g

本文关键字:Generic Collections IEnumerable 字符串 lt System 转换 类型 | 更新日期: 2023-09-27 18:22:10

我有这个型号,有三个相同型号的集合<AttendeesMeeting>

会议

[NotMapped]
[Display(Name = "xxxx", ResourceType = typeof(Resources.ReuniaoResources))]
public virtual ICollection<AttendeesMeeting> Required{ get; set; }
[NotMapped]
[Display(Name = "xxx", ResourceType = typeof(Resources.ReuniaoResources))]
public virtual ICollection<AttendeesMeeting> Informed{ get; set; }
[NotMapped]
[Display(Name = "xxxx", ResourceType = typeof(Resources.ReuniaoResources))]
public virtual ICollection<AttendeesMeeting> Optionals{ get; set; }

在方法中执行get以检索一些值。

我希望我的三个模型对象只接收返回值中的"Login"。

public Meeting GetReuniaoForEdit(int id)
{
    var model = this.context.Meetings.Find(id);
    var required = context.AttendeesMeeting.Where(x => x.IdReuniao == id && x.TypeAttendee == 1);
    var informed = context.AttendeesMeeting.Where(x => x.IdReuniao == id && x.TypeAttendee == 2);
    var optionals = context.AttendeesMeeting.Where(x => x.IdReuniao == id && x.TypeAttendee == 3);
    if (required.Any() || informed.Any() || optionals.Any())
    {
        //Login is a string
        model.required = required.Select(x => x.Login).ToList();
    }
}

错误:

model.required = required.Select(x => x.Login).ToList();

无法隐式转换类型'System.Collections.Generic.List<string>'到"System.Collections.Generic.ICollection<Models.AttendeesMeeting>"。一显式转换存在(是否缺少强制转换?)

如何打开模型集合中的字符串列表?

有可能吗?

无法隐式转换类型';System.Collections.Generic.IEnumerable<;字符串&g

现在,通过.Select(x => x.Login).ToList()可以创建一个要分配给ICollection<AttendeesMeeting>的字符串列表。你可以用几种方法来解决这个问题,例如:

  • 您可以更改模型,以便用ICollection<string>替换ICollection<AttendeesMeeting>。如果您曾经只需要Login,那么您的模型应该为此进行优化
  • 您可以省略.Select(x => x.Login),然后将会议集合分配给模型中的属性;在您的视图中,只显示模型的Login属性,而忽略其余数据
  • 如果您无法更改现有模型,我建议创建一个新的模型类,该类可以准确存储特殊情况下所需的数据。在这种情况下,您可以将属性作为ICollection<string>添加到新模型中,并在特殊情况下使用它

我想你想要的是通过他们的login获得会议。因此,您需要进一步的步骤,因为required.Select(x => x.Login).ToList()只会选择您会议的登录名。然而,您需要进一步选择符合这些ID的所有会议:

var model = this.context.Meetings.Where(x => required.Select(y => y.Login).Contains(x.login));
相关文章: