C# LINQ Substring

yacmzcpb  于 5个月前  发布在  C#
关注(0)|答案(1)|浏览(63)

我尝试在Linq中使用Programme Reference字段连接两个Programme列表-列表A中的引用有时可能会在末尾附加“-R”,并且可能会在列表中出现两次(一次带有“-R”,另一次没有),而列表B中的引用根本不会附加“-R”。
在列表A中,每个记录有两行,我已经提到了,我得到了“长度不能小于零。”错误。下面是我的代码;
例如:

ListA
UG00001-2023
UG00001-2023-R
UG00002-2023
UG00002-2023-R

List B
UG00001-2023
UG00002-2023

个字符
所以,我试图实现的是,如果列表A中的Programme Ref中的一行在引用的末尾附加了“-R”,则返回“-R”之前的所有内容,但如果Programme Ref没有附加“-R”,则返回引用。
任何帮助将不胜感激。

hfwmuf9z

hfwmuf9z1#

您遇到的错误“Length cannot be less than zero”,可能是由于在未找到指定子字符串时对字符串调用SubstringIndexOf造成的。要避免此错误并获得所需结果,您可以按如下方式修改LINQ查询:

var combinedList = from programmeA in ListA
    join programmeB in ListB
    on (programmeA.REFERENCE.EndsWith("-R")
        ? programmeA.REFERENCE.Substring(0, programmeA.REFERENCE.Length - 2)
        : programmeA.REFERENCE)
    equals programmeB.REFERENCE
    select new Programme
    {
        // project your properties here
    };

字符串
这种方法将处理列表A中的引用可能有也可能没有附加“-R”的情况,并相应地连接它们。

相关问题