在Linq 查詢中定義變數(let 關鍵字). Created: November-22, 2018. 要在linq 表示式中定義變數,可以使用let 關鍵字。這通常是為了儲存中間子查詢的結果,例如: ... <看更多>
「linq where變數」的推薦目錄:
- 關於linq where變數 在 [問題] Linq 的Max 如何取得具最大值的那個物件- 看板C_Sharp 的評價
- 關於linq where變數 在 在Linq 查詢中定義變數(let 關鍵字) | 他山教程 的評價
- 關於linq where變數 在 所以什麼是LINQ? | 深入探索LINQ 的評價
- 關於linq where變數 在 Store Linq function into Variable & define on the fly? - Stack ... 的評價
- 關於linq where變數 在 live - GitHub 的評價
- 關於linq where變數 在 Calculate new column with LINQ | Let Array - YouTube 的評價
linq where變數 在 所以什麼是LINQ? | 深入探索LINQ 的推薦與評價
LINQ 全名為Language Integrated Query,顧名思義就是此程式語言擁有查詢資料的 ... 隱含型別變數就是我們在JavaScript上又愛又恨的 var ,但C#中的 var 變數還是強型別 ... ... <看更多>
linq where變數 在 live - GitHub 的推薦與評價
visualstudio-docs.zh-tw/docs/debugger/debugging-linq.md ... 您可以複製LINQ 變數並張貼到[監看式] 視窗或[快速監看式] 對話方塊。 在LINQ 中,建立或宣告查詢時並 ... ... <看更多>
linq where變數 在 [問題] Linq 的Max 如何取得具最大值的那個物件- 看板C_Sharp 的推薦與評價
問題描述:
三位顧客 Alice, Bob, Clair 的芳齡分別是 30, 35, 25
請用 Linq 取得年齡最大的顧客,並顯示其名字及年齡
理想的程式碼可能是這樣:
var customers = new[] {
new { Name = "Alice", Age = 30 },
new { Name = "Bob", Age = 35 },
new { Name = "Clair", Age = 25 }
};
var oldest = customers.Max(c => c.Age);
MessageBox.Show(string.Format("{0} {1}", oldest.Name, oldest.Age));
可是這裡 Linq 的 Max 是傳回 Age 的最大值,也就是 35,並非傳回具最大值的那個物件
因此以上程式碼是無法執行的
目前我所嚐試可執行的 Linq 是這樣
var customers = new[] {
new { Name = "Alice", Age = 30 },
new { Name = "Bob", Age = 35 },
new { Name = "Clair", Age = 25 }
};
var oldest = from c in customers let maxage = customers.Max(x => x.Age)
where c.Age == maxage select c;
foreach(var c in oldest)
MessageBox.Show(string.Format("{0} {1}", c.Name, c.Age));
但是這種做法會掃描兩次 customers,在取 Max 時一次,在比對 == maxage 時又一次
一般我們用迴圈解類似問題時只要掃描一次即可,因此這樣的解並不是很漂亮
考慮用迴圈只掃描一次的做法
int maxage = int.MinValue;
var oldest = customers[0];
foreach(var c in customers) {
if(c.Age > maxage) {
maxage = c.Age; oldest = c;
}
}
MessageBox.Show(string.Format("{0} {1}", oldest.Name, oldest.Age));
我想 Linq 應該有更方便的語法也可以得到相同結果,且不必用到那麼多變數
但不知道該怎麼寫,可否請分享一下經驗,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.41.97
... <看更多>