第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Linq GroupBy 并取不為空的條目

Linq GroupBy 并取不為空的條目

C#
哈士奇WWW 2022-01-15 19:34:24
Selection 類有 4 個屬性:public class Selection{    string IdSelectionType {get; set;}    string Name {get; set;}    decimal? OddValue {get; set;}    bool Visible {get; set;}}示例數(shù)據(jù)var originalList = new List<Selection>()        {            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},        };我想選擇一個列表,如果有另一個相同但具有 OddValue 的元素!= null,則丟棄具有 OddValue = null 的元素。是否有任何 Linq / MoreLinq 運算符可以做類似的事情?Selections.GroupBy(s =>          new {s.IdSelectionType, s.Name, s.OddValue, s.Visible})          .Select(g => g.First()).ToList();預(yù)期的結(jié)果是:
查看完整描述

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然后按分組NameOddValue != null在帶有 的條目之前,您將擁有帶有的條目OddValue == null。然后取每個分組的第一個條目。

這也將返回OddValue == null具有相同的條目,而沒有其他條目Name。

最終結(jié)果:https ://dotnetfiddle.net/jZ5gs2


查看完整回答
反對 回復(fù) 2022-01-15
?
MMMHUHU

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


查看完整回答
反對 回復(fù) 2022-01-15
  • 2 回答
  • 0 關(guān)注
  • 301 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號