【发布时间】:2010-10-18 10:05:08
【问题描述】:
我有一个 linq 查询,它返回按与当前文章匹配的标签数量排序的文章
例如
当前文章有标签 - tag1、tag2、tag3
标记文章 1 - tag1,tag2,tag3 标记文章 2 - tag1,tag2
我的linq是
DataTable query = (from row in dt.AsEnumerable()
let tags = row.Field<string>("Tags").Split(seperator, StringSplitOptions.RemoveEmptyEntries)
let count = tags.Count(t => currenttags.Contains(t))
orderby count descending
select row).CopyToDataTable();
我想按文章类型(文献、案例研究、下载等)的 ClassName 添加组
应该是这样的
group row by {row.Field<string>("ClassDisplayName")}
但是,当我将它添加到查询中时,我会得到红色的波浪线
DataTable query = (from row in dt.AsEnumerable()
group row by {row.Field<string>("ClassDisplayName")}
let tags = row.Field<string>("Tags").Split(seperator, StringSplitOptions.RemoveEmptyEntries)
let count = tags.Count(t => currenttags.Contains(t))
orderby count descending
select row).CopyToDataTable();
任何想法我做错了什么?
这是当前仅适用于 order by 的命令
DataTable dt = ArticleCollection(SqlClause.ToString());
var seperator = new[] { ",", " " };
var current = dr["Tags"].ToString();
var currenttags = dr.Field<string>("Tags").Split(seperator, StringSplitOptions.RemoveEmptyEntries);
DataTable query = (from row in dt.AsEnumerable()
let tags = row.Field<string>("Tags").Split(seperator, StringSplitOptions.RemoveEmptyEntries)
let count = tags.Count(t => currenttags.Contains(t))
orderby count descending
// group row by row.Field<string>("ClassDisplayName") into g
select row).CopyToDataTable();
if (!DataHelper.DataSourceIsEmpty(query))
{
TagRepeaterOutter.DataSource = query;
TagRepeaterOutter.DataBind();
}
【问题讨论】:
-
您需要提供一个至少非常接近编译的示例。 1)“分隔符”未定义。 2) currenttags 未定义。 3) 扩展方法 CopyToDataTable 未定义。阅读tinyurl.com/so-hints,尤其是示例代码和数据部分。
-
您遇到了什么错误。 “红色曲线”不是一个非常精确的问题描述。
标签: asp.net linq linq-to-sql