我想在两个集合之间进行GroupJoin,但是基于一些其他谓词而不是相等.例如,如果我有一个带有项目的集合,每个集合都包含一个范围属性,我想将每个项目与来自另一个集合的项目相关联,这些项目具有一定范围内的值的属性.
这可以用
GroupJoin或任何其他LINQ方法完成吗? 最佳答案 假设这些是您的数据类型:
public class Range
{
public int Start { get; set; }
public int End { get; set; }
}
public class Item
{
public int Number { get; set; }
}
这个Linq表达式会给你你想要的东西(包括重叠范围)
var ranges = new Range[];
var items = new Item[];
// ...
var rangeGroups = ranges
.Select(r=> new {Range=r, Items=items.Where(i=> (r.Start <= i.Number) && (i.Number <= r.End))});
rangeGroups将为每个项目提供Range和Items.
看看这个在线演示 – https://ideone.com/HQomfc