【问题标题】:Partial Matching While Searching in a List of Strings in Linq [duplicate]在 Linq 中搜索字符串列表时的部分匹配 [重复]
【发布时间】:2013-06-06 12:22:54
【问题描述】:

在 List.Contains 方法中,如何更改以下 linq 查询以适应部分搜索,就像我们在 sql 中使用 LIKE

AllDegrees.Listt = new List<string>();
.....
.....
.....
.....
var query = from q in query
join ce in context.CandidateEducations
on q.c.Candidate_OID equals ce.Candidate_OID
where AllDegrees.Listt.Contains(ce.Degree)
select q;

实际情况是我在 AllDegrees.Listt 中有 kaaal, jaaaal, baaal, maaal。现在,如果 ce.Degree 是 ka 或 al 或 ja 或 aa,则该行应包含在我的结果集中。

【问题讨论】:

  • 在哪里 AllDegrees.Listt.IndexOf(ce.Degree) !=-1 ?不确定。
  • 我只是想从字符串列表中容纳部分字符串搜索,上面粘贴的只是我认为我可以做到这一点的一个例子。
  • 忽略!在条件

标签: c# linq entity-framework list


【解决方案1】:
AllDegrees.Listt.Where(x => x.Contains("your string")).Any();

【讨论】:

  • 绝对没用,这个语句返回 List 其中需要的是 bool。
  • Erm... i just want to accommodate partial string search from inside a List of strings 这就是这样做的。您在任何地方都没有声明它应该返回一个布尔值?也许你应该完善你的问题。无论如何,无论如何都要更新。
【解决方案2】:

检查一下,

   private List<string> findDegreesLoop()
   {
        var list1 = new List<string>();
        var list2 = new List<string>();
        var list3 = new List<string>();

        foreach (var degree in list2)
        {
            var matches = list1.Where(q => q.Contains(degree)).ToList();
            if (matches.Any())
            {
               list3.AddRange(matches);
            }
        }
return list3;
 }


  private List<string> findDegreesLinq()
 {
        var list1 = new List<string>();
        var list2 = new List<string>();
        var list3 = new List<string>();

        foreach (var matches in list2.Select(degree => list1.Where(q =>     q.Contains(degree)).ToList()).Where(matches => matches.Any()))
        {
            list3.AddRange(matches);
        }
return list3;
  }

【讨论】:

    【解决方案3】:

    不确定这是否是您正在寻找的。这是一个实现 contains (~ SQL LIKE) 方法的简单示例。

        context.CandidateEducations.Where(d=>d.ToLower().Trim().Contains(MyVariable.ToLower().Trim()))
    

    【讨论】:

    • 刚刚注意到您的以下回复。上面的查询也会返回一个列表。要将其转换为布尔值,您可以使用 MyList.Any()
    • 不起作用 ^(在评论中提供了修复)
    • 您为您的问题添加了更多解释,这很好。检查我的以下回复。
    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多