0
我有一個表格充滿了地址。我的目標是找到有相似地址的人,並將他們分組在一起。我當然可以這樣做:GroupBy基於參數的多個屬性
var groups = addresses.GroupBy(a => a.FullAddress);
這很好。但是用戶可以選擇他們希望在GroupBy中應用的地址屬性。例如:
//user selected postalCode & state
var groups = addresses.GroupBy(a => new { a.PostalCode, a.State });
有6個布爾值用戶可以整合到他們的搜索中。有沒有一種簡單的方法通過LINQ來解決這個問題?如果不是,我敢肯定我可以找出一些陳述,但我想象有一個更優雅的解決方案,我找不到任何類似的問題。
這是在ASP.NET MVC項目中,作爲使用實體框架爲報告頁面構建AddressGroupsViewModel
的服務的一部分。
public AddressGroupsViewModel GetSearchResults(bool address1, bool address2, bool city, bool state, bool country, bool postalcode)
{
}
SOLUTION
鑑於公認的答案(這是我需要的幾乎什麼),我創造了這個查詢滿足我的要求:
var groups = dbContext
.GroupBy(t => new
{
Address1 = (address1 ? t.AddressLine1 : ""),
Address2 = (address2 ? t.AddressLine2 : ""),
City = (city ? t.City : ""),
State = (state ? t.State : ""),
Country = (country ? t.Country : ""),
PostalCode = (postalcode ? t.PostalCode : "")
});
你能提供你的方法簽名?你回來了什麼? – thepirat000
你在LINQ [LINQ Conditional Group](http://stackoverflow.com/questions/756827/linq-conditional-group)有沒有在條件分組中看過這篇文章? – user1477388