我正在尝试使用动态LINQ进行GroupBy,但无法使其工作.
这是一些说明问题的示例代码:
List<dtoMyAlbum> listAlbums = new List<dtoMyAlbum>();
for (int i = 0; i < 5000; i++)
{
dtoMyAlbum album = new dtoMyAlbum
{
Author = "My Author",
BookID = i,
CurrSymbol = "USD",
Price = 23.23,
Shop = i % 3 == 0 ? "TESCO" : "HMV"
};
listAlbums.Add(album);
}
IQueryable<dtoMyAlbum> mydata = listAlbums.AsQueryable();
int count = mydata.Count();
//var mydataGrouped = mydata.GroupBy(a => a.Shop); // <-- this works well (but is not dynamic....)
var mydataGrouped = mydata.GroupBy("Shop"); // <-- does …Run Code Online (Sandbox Code Playgroud) 我需要将以下LINQ查询转换为动态LINQ,它根据用户输入接受多个分组列.基本上我有一堆应用分组的下拉列表,我不想枚举每个分组组合.如果动态LINQ失败,我可能必须手动构建SQL查询,没有人想要它.
var grouping = ( from entry in ObjectContext.OmniturePageModules
where entry.StartOfWeek >= startDate && entry.StartOfWeek <= endDate &&
( section == "Total" || section == "All" || entry.Section == section ) &&
( page == "Total" || page == "All" || entry.Page == page ) &&
( module == "Total" || module == "All" || entry.Module == module )
group entry by new
{
entry.Page, // I want to be able to tell this anonymous type
entry.Module, // which columns …Run Code Online (Sandbox Code Playgroud) 我只需做一个简单的比较即
byte[] keya = System.Text.Encoding.ASCII.GetBytes("myFamilyColumn:1");
byte[] keyb = System.Text.Encoding.ASCII.GetBytes("myFamilyColumn:1");
Console.WriteLine(keya == keyb);
Run Code Online (Sandbox Code Playgroud)
但结果是假的,他们的哈希码也不同,我在这里遗漏了什么?
提前致谢 !