删除空白字段和重复项
Removing blank fields and duplicates
这个功能有效。
Public Shared Function RemoveDuplicates(ByVal items As Object()) As String()
System.Array.Sort(items)
Dim k As Integer = 0
For i As Integer = 0 To items.Length - 1
If i > 0 AndAlso items(i).Equals(items(i - 1)) Then
Continue For
End If
items(k) = items(i)
k += 1
Next
Dim unique As [String]() = New [String](k - 1) {}
System.Array.Copy(items, 0, unique, 0, k)
Return unique
End Function
我想添加一个删除“ ”字段的条件。
我在 Lookupset 中使用它
=Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet1")), " / ")
我得到的结果如下所示:
/合作伙伴
/兰花
二十多岁
您可以通过将函数包装在 IIf()
函数中来防止 remove(1,1)
错误。这样,如果字符串中至少有两个字符,您只需从字符串中删除第二个字符。
所以你的函数会变成
IIf(Len(Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet1")), " / ")) >= 2, Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet1")), " / ").Remove(1,1), Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet1")), " / "))
为了提高可读性,我已将您的函数替换为 CustomFunction()
IIf(Len(CustomFunction()) >= 2, CustomFunction().Remove(1,1), CustomFunction())
为了防止.Remove(1,1)报错。我创建了一个重复的数据集,消除了所有空白值,然后在没有 .Remove(1,1) 的情况下执行了查找。这似乎对我有用。
= Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet4")), " / ")
成功了。
要处理空白字段,请更新您的共享函数代码,如下所示:
Public Shared Function RemoveDuplicates(ByVal items As Object()) As String()
System.Array.Sort(items)
Dim k As Integer = 0
For i As Integer = 0 To items.Length - 1
If i > 0 AndAlso items(i) <> "" AndAlso items(i).Equals(items(i - 1)) Then
Continue For
End If
items(k) = items(i)
k += 1
Next
Dim unique As [String]() = New [String](k - 1) {}
System.Array.Copy(items, 0, unique, 0, k)
Return unique
End Function
此外,更新 LookupSet 以处理空白 space,如下所示
=IIF(IsNothing(Code.RemoveDuplicates(LookupSet(
Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,
Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,
Fields!Security_Name.Value, "DataSet1"))(0)), "", Join(Code.RemoveDuplicates(LookupSet(
Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,
Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,
Fields!Security_Name.Value, "DataSet1")), " / "))
干杯,
基尔蒂·辛格 | IT 服务解决方案
这个功能有效。
Public Shared Function RemoveDuplicates(ByVal items As Object()) As String()
System.Array.Sort(items)
Dim k As Integer = 0
For i As Integer = 0 To items.Length - 1
If i > 0 AndAlso items(i).Equals(items(i - 1)) Then
Continue For
End If
items(k) = items(i)
k += 1
Next
Dim unique As [String]() = New [String](k - 1) {}
System.Array.Copy(items, 0, unique, 0, k)
Return unique
End Function
我想添加一个删除“ ”字段的条件。
我在 Lookupset 中使用它
=Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet1")), " / ")
我得到的结果如下所示:
/合作伙伴
/兰花
二十多岁
您可以通过将函数包装在 IIf()
函数中来防止 remove(1,1)
错误。这样,如果字符串中至少有两个字符,您只需从字符串中删除第二个字符。
所以你的函数会变成
IIf(Len(Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet1")), " / ")) >= 2, Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet1")), " / ").Remove(1,1), Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet1")), " / "))
为了提高可读性,我已将您的函数替换为 CustomFunction()
IIf(Len(CustomFunction()) >= 2, CustomFunction().Remove(1,1), CustomFunction())
为了防止.Remove(1,1)报错。我创建了一个重复的数据集,消除了所有空白值,然后在没有 .Remove(1,1) 的情况下执行了查找。这似乎对我有用。
= Join(Code.RemoveDuplicates(LookupSet(Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Name.Value, "DataSet4")), " / ")
成功了。
要处理空白字段,请更新您的共享函数代码,如下所示:
Public Shared Function RemoveDuplicates(ByVal items As Object()) As String()
System.Array.Sort(items)
Dim k As Integer = 0
For i As Integer = 0 To items.Length - 1
If i > 0 AndAlso items(i) <> "" AndAlso items(i).Equals(items(i - 1)) Then
Continue For
End If
items(k) = items(i)
k += 1
Next
Dim unique As [String]() = New [String](k - 1) {}
System.Array.Copy(items, 0, unique, 0, k)
Return unique
End Function
此外,更新 LookupSet 以处理空白 space,如下所示
=IIF(IsNothing(Code.RemoveDuplicates(LookupSet(
Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,
Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,
Fields!Security_Name.Value, "DataSet1"))(0)), "", Join(Code.RemoveDuplicates(LookupSet(
Fields!Fund_Family.Value &Fields!Portfolio_Company_Name.Value,
Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,
Fields!Security_Name.Value, "DataSet1")), " / "))
干杯,
基尔蒂·辛格 | IT 服务解决方案