我无法从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)?
答案 0 :(得分: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吗?
这是一个非常奇怪的查询 - 特别是因为你的连接不使用第一个表中的任何内容......