前提
LINQについての質問です。
対象をグループごとに処理する方法(groopby句?)の使い方が理解できていないため、ご教示いただけると幸いです。
実現したいこと
Productクラスは袋のサイズを表すint型の変数、満杯かどうかを表すbool型の変数で構成されています。
サイズの異なる袋の一覧があったと仮定して、満杯の袋のサイズの一覧を取得したいです。
該当のソースコード
C#
1using System; 2using System.Linq; 3 4namespace MyApp // Note: actual namespace depends on the project name. 5{ 6 internal class Program 7 { 8 static void Main(string[] args) 9 { 10 List<Product> p_lst = new List<Product>(); 11 p_lst.Add(new Product(10,false)); 12 p_lst.Add(new Product(10, true)); 13 p_lst.Add(new Product(50, false)); 14 p_lst.Add(new Product(50, false)); 15 p_lst.Add(new Product(100, true)); 16 p_lst.Add(new Product(200, false)); 17 18 //Falseしかない袋のサイズの一覧を取得したい 19 List<int> shoudAddSize_lst = p_lst 20 //.******* //Falseしかないproductをサイズ別に抽出 21 .Select(x => x.Size) 22 .Distinct() 23 .ToList(); 24 25 foreach (var size in shoudAddSize_lst) 26 { 27 Console.WriteLine(size);//求めたいListの一覧:50,200 28 } 29 } 30 } 31 32 public class Product 33 { 34 public int Size; 35 public bool Canput; 36 37 public Product(int size,bool canput) 38 { 39 Size = size;//袋の大きさ 40 Canput = canput;//True→入れることが可能 False→満杯 41 } 42 } 43 44}
補足情報(FW/ツールのバージョンなど)
VisualStudio2022 コンソールアプリ
下記で欲しいデータが取得できているのかな?
groopbyは使っていないです。
List<int> shoudAddSize_lst = p_lst
.Where(x => x.Canput == False)
.Select(x => x.Size)
.Distinct()
.ToList();
kikukikuさん、質問ありがとうございます。
List<int> shoudAddSize_lst = p_lst
.Where(x => x.Canput == false)
.Select(x => x.Size)
.Distinct()
.ToList();
Where句で絞ると結果が10,50,200になりますが、この場合10は抽出したくないです(trueが存在するため)
Falseだけしかないサイズ(50,200)を取り出したいです。
回答2件