-1
は、私はあなたが見ることができるように選択selectでスイッチ内のコードの重複を減らしますか?
switch (sorting)
{
case "newest":
{
var userId = User.Identity.GetUserId();
var model = db.Posts.Include(p => p.Vote)
.OrderByDescending(p => p.PostId).ToList()
.Select(p => new ListPostsViewModel
{
UserVotedUpOnPost = p.Vote.Any(u => u.ApplicationUserID == userId && u.PostVote == 1),
UserVotedDownOnPost = p.Vote.Any(u => u.ApplicationUserID == userId && u.PostVote == -1),
PostId = p.PostId.ToString(),
TimeAgo = ToRelativeDate(p.MessageDate),
Message = p.Message,
TotalVotes = p.Vote.Sum(v => v.PostVote)
}).ToList();
return View("Index", model);
} break;
case "oldest":
{
var userId = User.Identity.GetUserId();
var model = db.Posts.Include(p => p.Vote)
.OrderBy(p => p.PostId).ToList()
.Select(p => new ListPostsViewModel
{
UserVotedUpOnPost = p.Vote.Any(u => u.ApplicationUserID == userId && u.PostVote == 1),
UserVotedDownOnPost = p.Vote.Any(u => u.ApplicationUserID == userId && u.PostVote == -1),
PostId = p.PostId.ToString(),
TimeAgo = ToRelativeDate(p.MessageDate),
Message = p.Message,
TotalVotes = p.Vote.Sum(v => v.PostVote)
}).ToList();
return View("Index", model);
}
break;
}
でこのスイッチがあり、異なっている唯一のラインは.OrderByDescending(p => p.PostId).ToList()
と私はさらにいくつかの類似していますが、私は選択中のすべてのコードを複製することなく、それをどのように書くことができます等?以下のような
'VARデータ= db.Posts.Includeた(p => p.Vote);'その後、あなたのswitch文は、それを注文する - '場合、 "最新":データ=データを。 OrderBy(...) 'など、最後に' var model = data.Select(.... ' –