Skip to content

Instantly share code, notes, and snippets.

@sniffdk
Created February 26, 2012 20:41
Show Gist options
  • Save sniffdk/1918890 to your computer and use it in GitHub Desktop.
Save sniffdk/1918890 to your computer and use it in GitHub Desktop.
public class HousesMinMaxIndex : AbstractIndexCreationTask<House, HousesMinMaxIndex.Result>
{
public HousesMinMaxIndex()
{
Map = houses => from house in houses
select new
{
HouseType = house.HouseType,
MinPrice = house.Price,
MaxPrice = house.Price,
MinSquareMeters = house.SquareMeters,
MaxSquareMeters = house.SquareMeters,
MinFloors = house.Floors,
MaxFloors = house.Floors,
MinRooms = house.Rooms,
MaxRooms = house.Rooms,
MinBuildTime = house.BuildTime,
MaxBuildTime = house.BuildTime
};
Reduce = results => from result in results
group result by result.HouseType
into p
select new
{
HouseType = p.Key,
MinPrice = p.Min(x => x.MinPrice),
MaxPrice = p.Max(x => x.MaxPrice),
MinSquareMeters = p.Min(x => x.MinSquareMeters),
MaxSquareMeters = p.Max(x => x.MaxSquareMeters),
MinFloors = p.Min(x => x.MinFloors),
MaxFloors = p.Max(x => x.MaxFloors),
MinRooms = p.Min(x => x.MinRooms),
MaxRooms = p.Max(x => x.MaxRooms),
MinBuildTime = p.Min(x => x.MinBuildTime),
MaxBuildTime = p.Max(x => x.MaxBuildTime)
};
}
public class Result
{
public House.HouseTypes HouseType { get; set; }
public int MinPrice { get; set; }
public int MaxPrice { get; set; }
public int MinSquareMeters { get; set; }
public int MaxSquareMeters { get; set; }
public int MinFloors { get; set; }
public int MaxFloors { get; set; }
public int MinRooms { get; set; }
public int MaxRooms { get; set; }
public int MinBuildTime { get; set; }
public int MaxBuildTime { get; set; }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment