블로그 이미지
* Microsoft MVP - Windows Development 2014 ~ 2020 http://youtube.com/FutureOfDotNet kaki104

카테고리

List All (613)
Uno Platform (2)
Visual Studio (6)
Blazor (2)
Windows App(Universa.. (106)
Xamarin Forms (4)
Bot Framework (19)
Azure (10)
Windows 10 (53)
WPF (7)
Facebook News & Tips (158)
Windows 8&8.1 (113)
Windows Phone 8 (42)
Silverlight (37)
HTML5 & MVC4 (16)
Portable Class Library (2)
Uncategorised Tips a.. (3)
Kinect for Windows (2)
ETC (12)
kaki104 Scrap (4)
App News (13)
Total553,920
Today5
Yesterday46

'linq101'에 해당되는 글 1건

  1. 2020.04.15 LINQ - Join Operations - part5/5

https://youtu.be/bA3oTTVseiE

LINQ 마지막 강의 입니다.

고생하셨습니다~

 

1. Conversion operators
- LINQ Result =} IEnumerable{T}
- ToArray()
  var doublesArray = sortedDoubles.ToArray();
- * ToList()
  var wordList = sortedWords.ToList();
- ToDictionary()
   var scoreRecordsDict = scoreRecords.ToDictionary(sr =} sr.Name);
- * OfType{T}()
  var doubles = numbers.OfType{double}();


2. Element operators
- First()
  (from p in products where p.ProductID == 12 select p) .First();
  .Single() ?
- * FirstOrDefault()
  int firstNumOrDefault = numbers.FirstOrDefault();
  .SingleOrDefault() ?
- Last()
- LastOrDefault()
- ElementAt()
  (from n in numbers where n } 5 select n).ElementAt(1);


3. Generators operators
- Range()
  From n in Enumerable.Range(100, 50) select (Number: n, OddEven: n % 2 == 1 ? "odd" : "even");
- Repeat()
  var numbers = Enumerable.Repeat(7, 10);


4. Quantifiers
- * Any()
  bool iAfterE = words.Any(w =} w.Contains("ei"));
- All()
  bool onlyOdd = numbers.All(n =} n % 2 == 1);


5. Aggregate Operators
- * Count()
  int uniqueFactors = factorsOf300.Distinct().Count();
- Sum()
  double numSum = numbers.Sum();
- Min()
  int minNum = numbers.Min();
- Max()
  int maxNum = numbers.Max();
- Average()
  double averageNum = numbers.Average();
- Aggregate()
  double endBalance = attemptedWithdrawals.Aggregate(startBalance, (balance, nextWithdrawal) =} ((nextWithdrawal {= balance) ? (balance - nextWithdrawal) : balance));


6. Sequence Operations
- Concat – 지연 실행 
  Var allNumbers = numbersA.Concat(numbersB);
  Union과 비슷하나 중복 제거를 안함
- Zip – 지연 실행
  Int dotProduct = vectorA.Zip(vectorB, (a, b) =} a * b).Sum();
  각 시퀀스에 인덱스를 이용해서 병합
- SequenceEqual
  bool match = wordsA.SequenceEqual(wordsB);


7. Query Execution
- Deferred Execution 지연 실행
  var q = from n in numbers select ++i;
  Foreach (var v in q) { Console.WriteLine($”v={v}, i={i}”); }
- Forcing Immediate Execution 바로 실행
  var q = (from n in numbers select ++i).ToList();
  Foreach (var v in q) { Console.WriteLine($”v={v}, i={i}”); }
- Reuse Query
  var lowNumbers = from n in numbers where n {= 3 select n;


8. Join Operations
- Cross Join
  from c in categories join p in products on c equals p.Category select (Category: c, p.ProductName);
- Group Join
  from c in categories join p in products on c equals p.Category into ps select (Category: c, Products: ps);
- Cross Group Join
  from c in categories join p in products on c equals p.Category into ps from p in ps select (Category: c, p.ProductName);
- Left Outer Join
  from c in categories join p in products on c equals p.Category into ps from p in ps.DefaultIfEmpty() select (Category: c, ProductName: p == null ? "(No products)" : p.ProductName);
- Right Outer Join? 다중키인 경우?
- 메뉴 항목 추가/삭제 화면에 등록 메뉴와 미등록 메뉴를 분리해서 보여주는 경우 사용

 

            var allMenus = CMenus.CMenuList;
            var regMenus = new List 
                {
                    new CMenu{ MenuId = 1, ParentId = 0, DisplayName = "Menu1"},
                    new CMenu{ MenuId = 3, ParentId = 0, DisplayName = "Menu3"},
                    new CMenu{ MenuId = 5, ParentId = 0, DisplayName = "Menu5"},
                    new CMenu{ MenuId = 12, ParentId = 1, DisplayName = "Menu12"},
                    new CMenu{ MenuId = 14, ParentId = 1, DisplayName = "Menu14"},
                };
            var unregMenus = from aMenu in allMenus
                             join rMenu in regMenus
                             on aMenu.MenuId equals rMenu.MenuId into joiner
                             from j in joiner.DefaultIfEmpty()
                             where j == null
                             select aMenu;

            foreach (var menu in unregMenus)
            {
                Console.WriteLine($"{menu.MenuId}, {menu.ParentId}, {menu.DisplayName}");
            }

 

 

'Windows App(Universal App) > Beginner' 카테고리의 다른 글

Install and update UWP apps from the Web  (0) 2020.04.25
LINQ - Join Operations - part5/5  (0) 2020.04.15
LINQ part 4  (0) 2020.02.11
LINQ part 3  (0) 2020.02.04
LINQ part2  (0) 2020.01.31
LINQ part1  (0) 2020.01.29
Posted by MVP kaki104
TAG , ,

댓글을 달아 주세요