2 回答

TA貢獻1818條經(jīng)驗 獲得超8個贊
var result = items.OrderBy(x => x.Name) .ThenByDescending(x => x.OddValue) .GroupBy(s => new {s.IdSelectionType, s.Name, s.Visible}) .Select(x => x.FirstOrDefault()) .ToList();
首先對項目排序Name
,OddValue
然后按分組Name
。OddValue != null
在帶有 的條目之前,您將擁有帶有的條目OddValue == null
。然后取每個分組的第一個條目。
這也將返回OddValue == null
具有相同的條目,而沒有其他條目Name
。
最終結(jié)果:https ://dotnetfiddle.net/jZ5gs2

TA貢獻1834條經(jīng)驗 獲得超8個贊
你可以使用聯(lián)合。選擇所有不具有 OddValue == null 的元素,然后將剩余的(具有 null 的元素)與第一個列表合并。
https://linqsamples.com/linq-to-objects/set/Union
var originalList = new[]
{
new Selection() {IdSelectionType = "1", Name = "Under (75.50)", Visible = true},
new Selection() {IdSelectionType = "2", Name = "Under (75.50)", Visible = true},
//new Selection() {IdSelectionType = "1", Name = "Under (75.50)", OddValue = 1.840m, Visible = true},
new Selection() {IdSelectionType = "2", Name = "Under (75.50)", OddValue = 1.860m, Visible = true},
};
var noneNulls = originalList.Where(ol => ol.OddValue != null);
var endList = originalList
.Where(ol => !noneNulls.Select(nn => nn.IdSelectionType).Contains(ol.IdSelectionType))
.Union(noneNulls);
工作示例:https ://dotnetfiddle.net/UJ8FaS
- 2 回答
- 0 關(guān)注
- 301 瀏覽
添加回答
舉報