我想知道如何以最佳方式解決這個問題,因爲我現在擁有的偉大工程在我看來,一個硬編碼列 - 我不知道我怎麼可以擴展它以允許列是動態的。動態LINQ GROUP BY查詢在ASP.NET MVC
控制器:
var dc = new DataContextDC();
return View(dc.items.Where(i=>i.IsPublic == true));
VIEW:
<% foreach (var grp in Model.GroupBy(s => s.GroupColumn)) { %>
<%= Html.Encode(grp.Key) %>
<% foreach (var item in grp) { %>
<%= Html.Encode(item.Title) %>
<% } %>
<% } %>
如前所述,目的是讓用戶選擇哪一列代替上述 「GroupColumn」。我想避免添加任何外部庫等
我看到使用反射(慢,但完全動態的),或者,因爲這是我的應用程序一個看法,我只是重複上面的代碼爲數據庫中的每個列然後放一個switch語句就可以了(快,髒,但有效)
最佳做法是什麼?我應該分離編譯.CS文件嗎?還是應該將它包含在我自己的項目中? – Nate
@Nate Bross:沒有具體的最佳做法;如果您預見到可能會在不同的應用程序中重用該功能,那麼將其作爲單獨的庫進行編譯(您已經有了一個'.sln'),否則這兩種方法都可行。這是MSPL,所以你基本上可以做任何你想做的事情;你唯一不能做的就是重新分配源文件本身,而不在頂部的版權線。 – Aaronaught
OK,叫我傻,但我不能得到這個代碼的視圖中的工作,它在我的控制,但我無法弄清楚如何在'使用System.Linq.Dynamic'添加到視圖和'< %@導入...%>'無法正常工作,有沒有我失蹤的東西? – Nate