【问题标题】:Linq Filter Array of Delimited Strings分隔字符串的 Linq 过滤器数组
【发布时间】:2014-06-25 11:24:52
【问题描述】:

我有一个这样的字符串:

RoleId,RoleName|CategoryId,Cat​​egoryName

我先这样拆分它们:

string delm = "RoleId,RoleName|CategoryId,CategoryName";

string[] FieldsToReplace = attributes[0].IdsToReplaceWith.Split('|');

假设我有一个包含 RoleId 的变量:

string test = "RoleId";

现在我要获取每个包含字符串 RoleId 的数组项,我不想使用包含我需要完全匹配的内容。

我试过这个查询:

        var test = FieldsToReplace
                   .Where(x=>FieldsToReplace
                   .All(y => y.Split(',').Equals(delm))).ToArray();

我可以像这样对第一个索引进行硬编码:

var IdProperty = FieldsToReplace.FirstOrDefault(x => x.Split(',')[0] == delm);

但我希望它是动态的,因此它会检查我在 , 拆分后得到的每个数组项。

但它不返回任何记录。

任何帮助将不胜感激。

【问题讨论】:

  • y.Split(',') 返回一个数组。也许你需要 y.Split(',')[1] ?
  • 我不确定我是否遵循.. 预期的输出是什么?
  • 输出是reutrn那个与Roleid完全匹配的数组项,实际上我需要拆分,上的每个数组项,然后检查是否与RoleId匹配,如果匹配则返回该数组项
  • 为什么我的问题被否决了,我的问题是真实的,我无法解决我的问题
  • 当你说返回数组的那个项目时,你没有意义。您正在搜索的数组,如果在 , 上再次拆分,则匹配时仅返回您正在匹配的字符串。

标签: c# arrays linq linq-to-objects


【解决方案1】:

您想要拆分数组的元素。除此之外,检查这些拆分元素中的任何元素是否等于您的比较字符串似乎是合适的:

var test =
    FieldsToReplace
        .Where(x => x.Split(',')
            .Any(y => y.Equals(prop.Name)))
        .ToArray();

【讨论】:

  • 我怀疑我是否需要使用 Any 但我不知道该放在哪里......顺便谢谢
猜你喜欢
  • 2020-05-21
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多