如何在RDLC报表中合并DataSet1的唯一列值为指定字符串?
RDLC报表去重拼接字段值的实现方法
方法一:使用自定义代码
这是最灵活的实现方式,步骤如下:
- 打开RDLC报表设计界面,右键空白区域选择「报表属性」,切换到「代码」标签页。
- 粘贴以下C#代码,注意把代码里的你的字段名替换成数据集里实际存储名称的字段(比如数据集字段叫
Name,就改成"Name"):
public string GetUniqueNames() { // 用HashSet自动实现去重 System.Collections.Generic.HashSet<string> uniqueNames = new System.Collections.Generic.HashSet<string>(); // 遍历dataSet1的所有数据行 foreach (var row in Report.DataSets["dataSet1"].Rows) { string name = row["你的字段名"].ToString(); uniqueNames.Add(name); } // 用逗号加空格拼接去重后的名称 return string.Join(", ", uniqueNames); }
- 在报表需要显示结果的文本框中,设置表达式为:
=Code.GetUniqueNames()
方法二:用内置表达式直接实现(无需写代码)
如果不想编写自定义代码,可以借助LookupSet和Linq的去重方法,直接写表达式:
=Join(System.Linq.Enumerable.Cast(Of String)(System.Linq.Enumerable.Distinct(LookupSet(1, 1, Fields!你的字段名.Value, "dataSet1"))), ", ")
同样需要把Fields!你的字段名.Value替换成实际的字段引用,比如Fields!Name.Value。
注意:如果报表运行时出现Linq相关错误,建议改用方法一的自定义代码方案,兼容性更强。
内容的提问来源于stack exchange,提问作者nnmmss
相关产品推荐
相关产品推荐

