嗨,這是我的第一個問題,所以很抱歉,如果它真的很基礎 - 我很新編程! 在MVC中使用c#我試圖從entitymodel上下文中選擇具有Date屬性的對象。這個日期然後選擇相關的Weight對象等等來獲得我的「Set」對象列表。編程新手如何使這段代碼更簡潔
該代碼的工作原理和做我想要的,但希望有關如何使此代碼更簡潔的一般指導。這裏是代碼:
public ActionResult showDiary(string datein)
{
LocalTestEntities1 dblists = new LocalTestEntities1();
DateTime date = Convert.ToDateTime(datein);
IEnumerable<ExerciseDiary> diary = from o in dblists.ExerciseDiaries where o.Date == date select o;
var mydiary = diary.ToList();
ExerciseDiary thediary = mydiary[0];
IQueryable<Weight> weights = from o in dblists.Weights where o.DiaryID == thediary.ID select o;
var selectedWeight = weights.ToList();
Weight weight = selectedWeight[0];
IEnumerable<Set> sets = from x in dblists.Sets where x.WeightId == weight.WeightID select x;
return View(sets);
}
看來,我在這裏採取了太多的步驟。我知道我只是將一個物體返回日記。有沒有辦法從dblists中獲取這個對象而不發送給IEnumerable?
更接近,但沒有雪茄。這裏有幾個問題。沒有參數驗證。應該使用DateTime.TryParse,如果無效則處理。我們不確定是否有外鍵(權重 - > DiaryId,sets-> WeightId)。還應該將對象/ dbcontext包裝在using語句中。這裏有一個更深層的問題,因爲有假設。如果某個特定日期有多個日記,該怎麼辦?如果日記只包含一個重量,該怎麼辦?後一種情況你可以做一個dblists.ExerciseDiaries.Where(d => d.Date == date).Select(d => d.Weight.Select(w => w.Sets))。FirstOrDefault() – Shelakel 2012-07-06 22:59:57
我不同意,你必須作出與OP相同的假設。 – scottheckel 2012-07-06 23:12:48
感謝這很好,也表明我可以使用我的類對象以及var這些查詢@謝拉克爾感謝您的輸入,但我還沒有開始看看驗證等等(這是下一個) - 有所有的您鍵入的外鍵。每個日期只有一個日誌,每個日誌可能有多個權重 – Luthervd 2012-07-06 23:26:36