Vb.net 在SSRS中的lookuper中使用String.Contains

Vb.net 在SSRS中的lookuper中使用String.Contains,vb.net,tsql,reporting-services,Vb.net,Tsql,Reporting Services,我有两个叫做A和B的数据集。A有一个叫做纸的字段。B有两个字段,称为“科目”和“成绩” 这些字段中的数据类似于: +---------+-------+ +-----------------------------+ | Subject | Grade | | Paper | +---------+-------+ +-----------------------------+ | English | A |

我有两个叫做A和B的数据集。A有一个叫做纸的字段。B有两个字段,称为“科目”和“成绩”

这些字段中的数据类似于:

+---------+-------+       +-----------------------------+
| Subject | Grade |       |            Paper            |
+---------+-------+       +-----------------------------+
| English | A     |       | English Literature Autumn 1 |
| Maths   | D     |       | Further Maths Spring 2      |
| Physics | F     |       | Physics                     |
+---------+-------+       +-----------------------------+
我通常使用的LookUnder看起来像:

=LookupSet(Fields!Paper.Value, Fields!Subject.Value, Fields!Grade.Value, "B")
当然,它只返回F,因为物理是唯一相同的场。我需要一个能把剩下的分数都还回来的东西。我试过:

=LookupSet(Fields!Paper.Value, Fields!Subject.Value.IndexOf(Fields!Subject.Value) >= 0, Fields!Grade.Value, "B")


有没有一种方法可以在不改变数据的情况下实现它

如果源代码是SQL Server,则可以在T-SQL中使用LIKE执行此操作

SQL示例

结果

谢谢,这就解决了问题。看起来在SQL中做这类事情总是比较容易/可能的,而不是晦涩难懂的vb.net函数。我发现让SQL Server完成大部分工作并在SSRS中查看结果要容易一些。
=LookupSet(Fields!Paper.Value, Fields!Subject.Paper.ToLowerInvariant().Contains(Fields!Subject.Value), Fields!Grade.Value, "B")
WITH
subject_grades
AS
(
    SELECT tbl.* FROM (VALUES
      ( 'English', 'A')
    , ( 'Maths', 'D')
    , ( 'Physics', 'F')
    ) tbl ([Subject], [Grade]) 
)
, 
subject_papers
AS
(
    SELECT tbl.* FROM (VALUES
      ( 'English Literature Autumn 1')
    , ( 'Further Maths Spring 2')
    , ( 'Physics')
    ) tbl ([Paper]) 
)
SELECT
      sp.Paper
    , sg.Grade
FROM 
    subject_papers AS sp
    LEFT JOIN subject_grades AS sg ON sp.[Paper] LIKE '%' + sg.[Subject] + '%'