C#LINQ到实体-对象和对象集合的交集上的属性
作者:互联网
我曾经问过一个类似的问题,目的是了解如何获得与我持有的模型具有相同属性的另一组模型.
现在的问题是:
因此,“相似属性”的名称是什么,实际上将我引向了另一组属性.
原始帖子是:
C# LINQ to Entities query for the intersection of two different properties
我有3个型号命名为:
>具有Pencil.Id(int)和Pencil.Colors(IEnumerable)属性的铅笔
>具有Pen.Id(int)和Pen.Colors(IEnumerable)属性的笔
>具有ID和名称的颜色.
颜色模型是IEnumerable,因此具有超过1种颜色.例如;笔有15种不同的颜色,铅笔有25种不同的颜色.如果我所握笔的一种颜色在该笔的调色板中也可用,我想带一下相应的铅笔.
拉斐尔的绝佳解决方案是https://stackoverflow.com/a/11722191/1062284
int id = id_of_the_pen_that_i_am_holding;
Pen p = db.Pens.Find(id);
var penColorIds = p.Color.Select(m => m.Id).ToList();
var list = db.Pencils.Where(pencil => pencil.Color.Any(color => penColorIds.Contains(color.Id));
因此可以正常工作并且像魅力一样工作,但是如何学习常用颜色的名称呢?
我们得到其他具有相同颜色的属性,但是那是什么颜色?
如果有人可以产生此LINQ查询,我将不胜感激.我对LINQ来说还很陌生,非常感谢您的帮助.
解决方法:
如果您手中握有多支笔,请使用(在可变笔中)
var colors = pens.SelectMany(p=>p.Colors).Distinct();
var commonColors = db.Pencils.SelectMany (p => p.Colors.Where(c=>colors.Contains(c))).Distinct()
否则,如果您只有一支笔(可变笔)
var colors = pen.Colors;
var commonColors = db.Pencils.SelectMany (p => p.Colors.Where(c=>colors.Contains(c))).Distinct()
标签:linq-to-entities,c,entity-framework 来源: https://codeday.me/bug/20191101/1980447.html