【问题标题】:Using LINQ and contains with comma separated values使用 LINQ 并包含用逗号分隔的值
【发布时间】:2021-07-23 05:53:48
【问题描述】:

我正在尝试使用 contains 从 LINQ 查询中获取多个值。在Contains 条件下,我想传递逗号分隔的值,我想知道是否可以,这里是代码

UnitQuery = UnitQuery.Where(x => x.ParcelBase.Code.Contains("'3800105', '38001014'")
                    || x.Unit.UnitParcels.Any(y => y.ParcelBase.Code.Contains("'3800105','38001014'"))
                    || x.EUnit.EUnitNumber.Contains("'3800105','38001014'"));

此代码将逗号分隔的字符串视为单个值,我正在从此 LINQ 中查找多个值。

我们将不胜感激。

【问题讨论】:

    标签: c# linq contains


    【解决方案1】:

    这就是你在代码中所做的事情

    object_data_member.Contains(list_of_valid_values)
    

    这是你应该做的

    list_of_valid_values.Contains(object_data_member)
    

    具体来说……

    string[] parcelBaseCode = new string[] {"3800105", "38001014"};
    
    UnitQuery = UnitQuery.Where(x => parcelBaseCode.Contains(x.ParcelBase.Code)) ...
    

    等等

    【讨论】:

    • 一个建议,parcelBaseCode 应该是HashSet<string>。 OP 仅在列表中提供了两项,因此性能可能可以忽略不计,但如果这只是一个示例(或者如果有人遇到此答案),那么您以这种方式检查的大型列表应该是 HashSet<T>
    • 我已经尝试了建议的代码,但它不工作,另一个建议?
    • 查看我的更新回复。如果这仍然对您不起作用,请编辑您的问题以显示您修改后的代码、您的输入数据以及您获得的结果。
    • 是的,效果很好,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2013-07-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多