2

我无法从下面的 linq 查询中调用 take 方法

var data = from tb in table.AsEnumerable()
           join ch in channelTable.AsEnumerable() on syskey equals (DateTime)ch["syskey"]
           orderby Convert.ToDouble(tb[(string.Format("Channel{0}_data",Convert.ToInt32(ch["Channel_No"])))]) descending                       
           select new
           {
               Channel_No = ch["Channel_No"],
               Channel_data = tb[string.Format("Channel{0}_data", Convert.ToInt32(ch["Channel_No"]))],
           };

如何从上面的 linq 查询中添加 Take(5)?

4

1 回答 1

4

就像:

var top5 = data.Take(5);

也可以在同一个语句中执行此操作,但它有点难看:

var data = (from tb in table.AsEnumerable()
            join ch in channelTable.AsEnumerable() on syskey equals (DateTime)ch["syskey"]
            orderby Convert.ToDouble(tb[(string.Format("Channel{0}_data",Convert.ToInt32(ch["Channel_No"])))]) descending                       
            select new
            {
                Channel_No = ch["Channel_No"],
                Channel_data = tb[string.Format("Channel{0}_data", Convert.ToInt32(ch["Channel_No"]))],
            }).Take(5);

请注意,此处按字符串排序可能不会满足您的要求,除非您的值都是个位数 - 您真的想要 channel3、channel2、channel10、channel1 吗?

这是一个非常奇怪的查询 - 特别是因为您的连接不使用第一个表中的任何内容......

于 2012-10-23T06:00:07.040 回答