【问题标题】:Find specific string in List<>在 List<> 中查找特定字符串
【发布时间】:2015-01-19 14:32:39
【问题描述】:

我正在使用我的List&lt;SharepointFieldMapper&gt; iList,如下所示:

现在我想要达到的是:

 public string getStaticName(string SPFriendlyName)
 {
    if (!string.IsNullOrEmpty(SPFriendlyName))
    {
        foreach (SharepointFieldMapper x in iList)
        {            
            if (string.Equals(iList.FindAll(FriendlyName); (SPFriendlyName)){} //Didn't run

            result = iList.Find(x => x.FriendlyName.Contains(SPFriendlyName))); // Didn't run either
        }
 }

基本上,我想要在列表中搜索我作为参数的 SPFriendlyName 的值。但两次尝试都显示空结果。

不管是不是 Linq,我都不在乎。

【问题讨论】:

  • IsNullOrEmpty 检查应该在循环之外进行,它的结果永远不会从一次迭代到下一次迭代。
  • 附带说明,您的if (!string.IsNullOrEmpty(SPFriendlyName)) 应该在foreach 之外。
  • “两次尝试都不顺利” - 这就是你的问题出了问题的地方。 :P 有什么问题?
  • 在你的代码中设置一个断点并单步执行它以查看发生了什么。如果它“没有运行”,那么它很可能不满足访问该代码所必需的条件。
  • 谢谢大家,我已经更改了代码,@Octopoid 结果只是错误的 if,另一个没有 x 的问题??

标签: c# linq list


【解决方案1】:

所以你想获得列表中的第一个FriendlyName,即SPFriendlyName

string firstmatchingFriendlyName  = iList
    .Where(x => x.FriendlyName == SPFriendlyName)
    .Select(x => x.FriendlyName)
    .DefaultIfEmpty(null) // specify the replacement value
    .First();

这会搜索第一个SharepointFieldMapper,其中FriendlyName 等于参数并选择此字符串属性。 DefaultIfEmpty 允许指定一个替换值,如果没有该名称则使用该替换值。 Enumerable.First 要么选择第一个匹配项,要么选择替换值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多