gpt4 book ai didi

c# - 如何使用列表查询查找表?

转载 作者:行者123 更新时间:2023-11-30 20:32:46 24 4
gpt4 key购买 nike

鉴于下面的类,我希望能够使用 ID 列表返回 DesignAttribute 表中 AttributeId 为 1 或 3 的设计。

public class Design
{
public int DesignId { get; set; }
public string DesignName { get; set; }
public virtual List<DesignAttribute> DesignAttributes { get; set;}
}

public class Attribute
{
public int AttributeId { get; set; }
public string AttributeName { get; set; }
}

public class DesignAttribute
{
public int DesignAttributeId { get; set; }
public virtual Design Design { get; set; }
public virtual Attribute Attribute { get; set; }
}

一个设计可以有一个或多个属性,例如

设计表

DesignId    DesignName
1 Design A
2 Design B
3 Design C

属性表

AttributeId     AttributeName
1 Light
2 Dark
3 Demo

设计属性表

DesignAttributeId   Design_DesignId     Attribute_AttributeId
1 1 1 Design A is Light
2 1 3 Design A is also a Demo
3 2 2 Design B is Dark
4 3 1 Design C is Light

我有以下代码

//attributes list = "[1,3]  I want any designs that have  Light OR Demo attributes"
public List<Design> FilterDesigns(List<string> attributes)
{
//sudo code as i'm not sure how to structure this.
var designs = db.Designs.Where(i => i.DesignAttributes
WHERE DesignAttributes.AttributeId is in the list of attributes passed into the method)
}

因此,我希望最终得到包含设计 A 和设计 C 的 2 个项目的列表,因为它们在 DesignAttribute 查找表中都有一个针对属性 ID 1 和 3 的 ID。

最佳答案

试试这个:

var designs = db.Designs.Where(design => 
design.DesignAttributes.Any(designAttribute =>
attributes.Contains(designAttribute.Attribute.AttributeId)))
.ToList();

关于c# - 如何使用列表查询查找表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40916853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com