gpt4 book ai didi

c# - List Occurence 明智地阅读 c#

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:48 25 4
gpt4 key购买 nike

我有这样的类(class)

  public  class RoomDetails
{
public int RoomIndexID {get;set;} --(This is No of Rooms)
public int roomcategoryID {get;set;} -- (This is No of Category that room have)
public decimal roomPrice{get;set;}
public string roomCategory{get;set;}
}

所以我有这样的 RoomDetails 列表(数据)

  • 1,1,200,单人床
  • 2,1,250,双人床
  • 2,2,400,双人床,视野开阔
  • 2,4,530,三人床
  • 3,1,530,三人床
  • 3,2,600,三人大床

所以我想按照程序阅读此列表。

  • 1,1,200,单人床
  • 2,1,250,双人床
  • 3,1,530,三人床

  • 1,1,200,单人床
  • 2,1,250,双人床
  • 3,2,600,三人大床

  • 1,1,200,单人床
  • 2,2,400,双人床,视野开阔
  • 3,1,530,三人床

  • 1,1,200,单人床
  • 2,2,400,双人床,视野开阔
  • 3,2,600,三人大床

  • 1,1,200,单人床
  • 2,4,530,三人床
  • 3,1,530,三人床

  • 1,1,200,单人床
  • 2,4,530,三人床
  • 3,2,600,三人大床

如果您对我的问题重新评分有任何问题,请询问。

这是例子

我的数据列表是这样的

  • 房间 A -- A1
  • B 室——B1、B2、B3
  • C 室——C1、C2

(实际上 A ,B, C 是 RoomIndexID 的,A1,B1,B2,B3,C1,C2 是 roomcategoryID 的)所以我想这样读。

  • A1,B1,C1
  • A1,B1,C2
  • A1,B2,C1
  • A1,B2,C2
  • A1,B3,C1
  • A1,B3,C2

最佳答案

如果你想要“LINQy”解决方案,它会有点复杂。请注意,它是 LINQ to object,因此如果您有 IQueryable(例如来自 EntityFramework),您需要先调用 .ToList()

var total = list.GroupBy(x=>x.RoomIndexID)
.Select(x=>x.Count())
.Aggregate(1, (s,d)=>s*d);

var counts = list.GroupBy(x => x.RoomIndexID)
.ToDictionary(x => x.Key, x => x.Count());

var nums = list.GroupBy(x => x.RoomIndexID)
.Select(x => x.Select((p, i) => new {i, p}))
.SelectMany(x => x)
.ToList();

var result = Enumerable.Range(0, total)
.Select(x =>
nums.Where(y => {
var c = counts[y.p.RoomIndexID];
var p = counts
.Where(z => z.Key > y.p.RoomIndexID)
.Aggregate(1, (s,d)=>s*d.Value);

return y.i == x/p%c;
})
.Select(y => y.p)
);

此处演示:https://dotnetfiddle.net/udf6VA

关于c# - List Occurence 明智地阅读 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40440192/

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