タイトルの内容について質問があります。(答えていただきたい内容に丸数字を付けています)
①LINQのメソッド構文でできるものの、クエリ構文ではできないことがあるという情報をインターネットで見つけましたが、具体的にできることは何が違うのでしょうか。
②拡張メソッドでカラムを選択して処理をしたい場合は、クエリ構文ではできず、メソッド構文では実現可という認識ですが、正しいのでしょうか。
※参考URL(拡張メソッド一覧):https://johobase.com/linq-method-list/
③OracleやSQL ServerといったSQLでは実現できるものの、LINQ(クエリ構文やメソッド構文)では、実現できないことはあるのでしょうか。
④例えば、複数カラム存在するテーブルから特定のカラムの最大を取得する場合、クエリ構文では実現できず、メソッド構文では実現できると考えておりますが、認識あっておりますでしょうか。
(Microsoftのドキュメントを見る限り、カラム指定をしてデータを合計するときは、メソッド構文を使用しているようです)
※参考URL:https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.max?view=net-5.0#code-try-5
■例:クエリ構文では取得不可能?だが、取得可能なメソッド構文のケース
LINQ
1using Microsoft.AspNetCore.Mvc; 2using QuickMaster.Models; 3using QuickMaster.Views; 4using System; 5using System.Collections.Generic; 6using System.Linq; 7using System.Web; 8using WebApplication1.Models; 9using System.IO; 10 11namespace WebApplication1.Controllers 12{ 13 public class HomeController : Controller 14 { 15 private readonly MyContext _context; 16 17 public HomeController(MyContext context) 18 { 19 this._context = context; 20 } 21 22 public ActionResult Index() 23 { 24 ItemList[] items = new ItemList[] { 25 new ItemList() { Id = 1, Price = 100, ExpiryDate = new DateTime(2000, 4, 1) }, 26 new ItemList() { Id = 2, Price = 200, ExpiryDate = new DateTime(2005, 5, 1) }, 27 new ItemList() { Id = 3, Price = 300, ExpiryDate = new DateTime(2010, 6, 1) }, 28 new ItemList() { Id = 4, Price = 400, ExpiryDate = new DateTime(2015, 7, 1) }, 29 new ItemList() { Id = 5, Price = 2020, ExpiryDate = new DateTime(2020, 8, 1) } 30 }; 31 32 var traders1 = from m in items select m; 33 var tmp1 = traders1.Max(x=>x.Price); 34 35 Console.WriteLine(tmp1); 36 37 return View(); 38 } 39 } 40}
環境は、.NetCore 3.1 でVisual Studioを使用しております。
※本当はコントローラに書くのは良くないということは分かっていますが、動作確認が容易だと判断してあえてここに記載しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/28 03:13
2021/10/28 05:17
2021/10/28 05:28