C# linq 相似范围列表
C# linq similar range list
我正在创建类似的属性列表。
我必须在列表中查找 4 个相似的范围属性。
- 如果价格是 400,000 美元,那么我必须找到 4 个价格为 400,000 美元的房产。
如果找不到 4 个属性,则
- 将列表从高到低排序,并从列表中找到剩余的属性。
如果没有相同价格的房产则
将列表从高到低排序,从列表中得到两个属性
然后再次将列表从低到高排序并从中获取 2 个属性
名单
为了寻找相同价格的楼盘
var properties = props.results.Where(x => x.Price== price).ToList().Take(4);
从高到低列表
var highToLow = props.results.OrderByDescending(x => x.Price).ToList().Take(4);
从低到高的列表
var lowToHigh = props.results.OrderBy(x => x.Price).ToList().Take(4);
问题是
当从相同价格的属性中找到的属性少于 4 个时
var properties = props.results.Where(x => x.Price== price).ToList().Take(4);
现在我正在对列表从高到低进行排序,并从该高到低列表中查找其余属性。
var highToLow = props.results.OrderByDescending(x => x.Price).ToList().Take(4);
如何合并列表?
有没有人做过类似我想要实现的事情。如有任何帮助或建议,我们将不胜感激。
提前致谢
您需要使用Enumerable.Union:
var result= properties.Union(highToLow)
如果您的列表是一个对象列表,那么您应该实现一个可以在 Union 方法中使用的相等比较器。 Enumerable.Union
我正在创建类似的属性列表。
我必须在列表中查找 4 个相似的范围属性。
- 如果价格是 400,000 美元,那么我必须找到 4 个价格为 400,000 美元的房产。
如果找不到 4 个属性,则
- 将列表从高到低排序,并从列表中找到剩余的属性。
如果没有相同价格的房产则
将列表从高到低排序,从列表中得到两个属性
然后再次将列表从低到高排序并从中获取 2 个属性 名单
为了寻找相同价格的楼盘
var properties = props.results.Where(x => x.Price== price).ToList().Take(4);
从高到低列表
var highToLow = props.results.OrderByDescending(x => x.Price).ToList().Take(4);
从低到高的列表
var lowToHigh = props.results.OrderBy(x => x.Price).ToList().Take(4);
问题是
当从相同价格的属性中找到的属性少于 4 个时
var properties = props.results.Where(x => x.Price== price).ToList().Take(4);
现在我正在对列表从高到低进行排序,并从该高到低列表中查找其余属性。
var highToLow = props.results.OrderByDescending(x => x.Price).ToList().Take(4);
如何合并列表?
有没有人做过类似我想要实现的事情。如有任何帮助或建议,我们将不胜感激。
提前致谢
您需要使用Enumerable.Union:
var result= properties.Union(highToLow)
如果您的列表是一个对象列表,那么您应该实现一个可以在 Union 方法中使用的相等比较器。 Enumerable.Union