LINQ GroupBy子句可以包含一个操作吗?

时间:2011-03-02 21:44:03

标签: c# mysql linq

我遇到一些奇怪的情况,一些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的显式引用。

1 个答案:

答案 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
    };

我可能错了,但应该很容易尝试。