所以我有一個表格,在該表格中有鍛煉的統計資料,有兩個欄位英尺和英寸。我通過像這樣去 linq 計算出最長的跳躍。
var playerBroadJumpHistory = await api.GetAllWorkOutsByPlayerId(playerId);
var maxBroadJumpFeet = (from u in playerBroadJumpHistory
where u.PlayerId == playerId
orderby u.BroadJumpFeet descending
select u).Take(1);
但我也想獲得英寸的值,即 u.BroadJumpInches 在上面的示例中我將如何做到這一點但保留兩個元素?我顯然這樣做是為了獲得該人跳過那里的最大距離得分,但我需要兩列資料才能顯示它們。
我可以使用 select 創建一個新物件嗎?
uj5u.com熱心網友回復:
我發現我需要做的是這個。
var maxBroadJumpFeet = (from u in playerBroadJumpHistory
where u.PlayerId == playerId
orderby u.BroadJumpFeet descending
select new {Feet = u.BroadJumpFeet,
Inches =u.BroadJumpInches}).Take(1);
簡單地宣告一個新物件就足夠了。
但是如果我希望兩列都包含在最大值中,例如如果它是 5FT6 和 5FT3 obv 我希望它回傳 5FT6
uj5u.com熱心網友回復:
如果您希望兩列都包含在最大值中,那么您應該以降序方式對兩列進行排序orderby u.BroadJumpFeet descending, u.BroadJumpInches descending像這樣
var maxBroadJumpFeet = (
from u in playerBroadJumpHistory
where u.PlayerId == playerId
orderby u.BroadJumpFeet descending, u.BroadJumpInches descending
select new { Feet = u.BroadJumpFeet, Inches = u.BroadJumpInches }
).Take(1);
順便說一句,如果您想將結果作為物件實體(而不是 Enumerable)來檢索,那么您可以這樣做
var maxBroadJumpFeet = (
from u in playerBroadJumpHistory
where u.PlayerId == playerId
orderby u.BroadJumpFeet descending, u.BroadJumpInches descending
select new { Feet = u.BroadJumpFeet, Inches = u.BroadJumpInches }
).FirstOrDefault();
它將回傳最大結果或 null(如果查詢中沒有具有 PlayerId == playerId 限制的元素)
也select u或select new { Feet = u.BroadJumpFeet, Inches = u.BroadJumpInches }不影響“最大邏輯”,它只影響你最后會收到什么物件。
uj5u.com熱心網友回復:
它應該是多個列,即 u.BroadJumpFeet, u.BroadJumpInches
var maxBroadJumpFeet = (from u in playerBroadJumpHistory
where u.PlayerId == playerId
orderby u.BroadJumpFeet, u.BroadJumpInches descending
select new {Feet = u.BroadJumpFeet,
Inches =u.BroadJumpInches}).Take(1);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/523790.html
標籤:C#实体框架林克
上一篇:按具有特定子字串的字串串列分組
下一篇:要更新的動態屬性名稱
