c# - 将对象与一个数组与另一个数组进行比较

标签 c# linq

我有一个模型组:

public class GroupModel
{
    [Key]
    public int GroupModelId { get; set; }

    [Required]
    [MaxLength(50)]
    [DataType(DataType.Text)]
    public string GroupName { get; set; }

    [Required]
    public virtual ICollection<FocusArea> FocusAreas { get; set; }

    ...

还有一个模型焦点:

public class FocusArea
{
    public int FocusAreaId { get; set; }
    public FocusEnum Focus { get; set; }

    public List<ApplicationUser> ApplicationUser { get; set;  }

    public virtual ICollection<GroupModel> GroupModel { get; set; }


public enum FocusEnum
{
    Psych,
    Medical,
    LivingWith
}

Group 和 Focus 是多对多的关系。我的 Controller 正在接收:

public ActionResult GroupSearch(string[] focusSelected) // Values possible are Pysch, Medical and LivingWith
{
    List<GroupModel> groups;

    ...

问题:我想选择所有焦点都在 focusSelected 数组中的组。

我尝试过的:

groups = groups.Where(t => t.FocusAreas.Where(x => focusSelected.Contains(x.Focus))).ToList()).ToList();

显然不起作用。有人有其他想法吗?

最佳答案

这可能对你有帮助

 var result = groups.Where(g => g.FocusAreas.All(f => focusSelected
              .Any(fs => (FocusEnum)Enum.Parse(typeof(FocusEnum), fs, true) == f.Focus)));

关于c# - 将对象与一个数组与另一个数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33087177/

相关文章:

c# - 以编程方式插入字段值为 SQL 语句的行

c# - 如何从 EnumerateFiles 中删除目录?

c# - 以并行方式查找排列

c# - Linq FirstOrDefault(<条件>).Attribute 与Where(<条件>).Select(a => Attribute).FirstOrDefault()

c# - 使用 XElement.Load 时如何添加(或忽略)XML 命名空间

c# - fmodex 返回 ERR_FILE_BAD 在 Mono/Ubuntu 下播放 MP3 文件

c# - Serilog 不创建日志文件

c# - 基于c#中的两个数组查找和替换字符串中的字符

vb.net - 迭代中的性能和 Linq

c# - 没有对的单独记录