比较包含中拆分的字符串-LINQ

比较包含中拆分的字符串-LINQ,linq,Linq,我的要求是将字符串中的值与字符串列表进行比较 代码: 上面的代码抛出了一个错误,我需要在这里找到在presenterPresenter中显示的名称。presenterPresenter具有名称的拆分值。您可以按如下方式执行: var splitNames = Names.Split(','); bool Presented = Presenter.Any(p => splitNames.Contains(p)); 编辑: 如果你对比赛感兴趣,你可以做什么: var matches = P

我的要求是将字符串中的值与字符串列表进行比较

代码:


上面的代码抛出了一个错误,我需要在这里找到在presenterPresenter中显示的名称。presenterPresenter具有名称的拆分值。

您可以按如下方式执行:

var splitNames = Names.Split(',');
bool Presented = Presenter.Any(p => splitNames.Contains(p));
编辑:

如果你对比赛感兴趣,你可以做什么:

var matches = Presenter.Where(p => splitNames.Contains(p))
覆盖您的案例的单元测试:

[Test]
public void AllSourceEntriesAreFoundInTheTargetList()
{
    string names = "Prabha,Karan"; 
    List<string> presenter = new List<string> { "Prabha", "Joe", "Hukm" };
    IEnumerable<string> namesList = names.Split(',').Select(x => x.Trim());

    var list = presenter.Intersect(namesList);
    Assert.AreNotEqual(namesList.Count(), list.Count());

    presenter = new List<string> { "Prabha", "Karan", "SomeAnother" };
    var list1 = presenter.Intersect(namesList);
    Assert.AreEqual(namesList.Count(), list1.Count());
}

返回Presented==true(在名称中的任何元素上)以及Presenter中的任何元素。是的,它有效。我总是构建/测试我发布的代码。只是做了单元测试,它不起作用Presenter=Presenter。任何我没有使用的代码,您稍后发布为EDIT,因为我在EDIT之前询问过,所以添加了dejust,所以您知道这不起作用的原因是因为您正在将列表传递到contains中,但contains仅检查单个contains。ub1k的答案看起来是一个很好的解决方案,但请精确:您希望从Presenter中的名称或任何..中获得每个元素的true吗?所以你上面的代码。。如果它起作用,它应该返回true还是false?
string names = "Prabha,Karan"; 
List<string> presenter = new List<string> { "Prabha", "Joe", "Hukm" };
IEnumerable<string> namesList = names.Split(',').Select(x => x.Trim());
var list = presenter.Intersect(namesList);
bool presented = namesList.Count() == list.Count());
[Test]
public void AllSourceEntriesAreFoundInTheTargetList()
{
    string names = "Prabha,Karan"; 
    List<string> presenter = new List<string> { "Prabha", "Joe", "Hukm" };
    IEnumerable<string> namesList = names.Split(',').Select(x => x.Trim());

    var list = presenter.Intersect(namesList);
    Assert.AreNotEqual(namesList.Count(), list.Count());

    presenter = new List<string> { "Prabha", "Karan", "SomeAnother" };
    var list1 = presenter.Intersect(namesList);
    Assert.AreEqual(namesList.Count(), list1.Count());
}