0

我有这样的实体

Product                           Room
long productid                    long roomid
List<Room> rooms                  string roomname
String name  

现在我有一个产品实体列表,除了房间列表之外,它还有重复的日期。方程。

Product                                
Id 1                        Id2                    Id3
Rooms = 1,A                 Rooms = 1,B            Rooms =1,C
ABC                         ABC                    ABC

在这种情况下,我将相同的属性重复了 3 次,因为它有 3 个房间。

我要做的是将所有房间添加到一个产品实体中,该实体将具有一个产品实体和房间列表(在这种情况下为 3 个列表)。我尝试过这样的事情,但它不起作用。

在这里,我正在传递属性 ID

var result = from t in Product
             where t.ProductId == propId
             group t by t.Rooms
             into g
             select g;

请提供任何帮助或想法

4

2 回答 2

0

这个怎么样?

var product = Product.First(p => p.ProductId == propId);

product.Rooms = from p in Product
                from r in p.Rooms
                select r;
于 2012-07-09T17:08:23.397 回答
0

如果您只需要获取与任何产品关联的房间列表,您可以尝试以下操作:

var query = from t in products
            select t;
var rooms = query.Aggregate(new List<Room> { }.AsEnumerable(), (i, p) => i.Union(p.rooms));

请注意,聚合不会作为 sql 查询执行(如果您从数据库中提取数据) - 而是在内存中执行。

我不确定这是否是您想要的结果,但它会为您提供所有产品组合的“房间”属性中的房间列表。例如,如果您有一个产品的房间“A”和“B”,而另一种产品的房间“C”,则结果房间列表将包含“A”、“B”和“C”。

于 2012-07-09T17:16:35.277 回答