我遇到一些奇怪的情况,一些LINQ没有产生我期望的响应。
以下我想要的方式组(两组:一组用于奇数,一组用于偶数):
var ints = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var foo = from i in ints
group i by i % 2 into g
select new {
Key = g.Key,
Group = g
};
当我在MySQL数据库上执行以下类似查询(使用IQ驱动程序)时,会导致完全不直观的事情:数据库中每个条目的单独“组”。
var bar = from f in MYDATABASE_TABLE.Take(10)
group f by f.Uid % 2 into g // where Uid is an int
select new {
Key = g.Key,
Group = g
};
有没有人对为什么这么奇怪的行为有任何想法?如果我向它添加任何类型的操作,GroupBy子句似乎表现得很奇怪。 (例如,您可以尝试使用0和1的随机数生成器(例如,用random.Next(1)替换“f.Uid%2”子句),它会执行类似的操作。)
编辑:取消对“linq-to-sql”的引用,结果证明是错误的,并添加了对IQ Driver的显式引用。
答案 0 :(得分:0)
试试这个(未经测试,但我做过类似的事情):
var bar = from f in MYDATABASE_TABLE.Take(10)
let u = f.Uid % 2
group f by u into g // where Uid is an int
select new {
Key = g.Key,
Group = g
};
我可能错了,但应该很容易尝试。