我有一个这样的数据库类:
public partial class Colour
{
public int ColourID { get; set; }
public string Colour1 { get; set; }
}
另类这样的课程:
public partial class RangeColour
{
public int RangeColourID { get; set; }
public Nullable<int> RangeID { get; set; }
public Nullable<int> ColourID { get; set; }
}
和第三类这样:
public partial class Range
{
public int RangeID { get; set; }
public string RangeName { get; set; }
}
每个Range
实例可以包含Colour
类中的多种颜色。所有范围都是和它们的颜色在RangeColour
类中相关联。
此关系建立如下:RangeID
表中的Range
是RangeID
表中RangeColour
的主键。
ColourID
表中Colour
的{{1}}方式是ColourID
表中RangeColour
的主键。
我在c#方法中获得了IEnumerable
特定范围,如下所示:
public class HomeController : Controller
{
Entities db = new Entities();
public ActionResult Product(int id)
{
IEnumerable<RangeColour> colran = db.RangeColours.Where(c => c.RangeID == id);
//other code
}
}
现在,我已获得属于IEnumerable
的所有RangeColours
的{{1}}表colourID
如何创建新的RangeID
哪个IEnumerable
包含Colour1
表中ColourID
个值的所有Colour
?我确信这可以用某种lambda表达式完成。
答案 0 :(得分:2)
您可以在IQueryable上使用Join
扩展名来获取颜色。
IQueryable<Colour> colors = db.Colors.Join(
db.RangeColours.Where(c => c.RangeID == item.RangeID),
c => c.ColourID,
r => r.ColourID,
(c, r) => c);
然后,您可以根据需要选择Colour1字符串。如果你需要在内存中使用ToList()
。
colors.Select(c => c.Colour1).ToList()