Linq查询匹配

  • 本文关键字:查询 Linq c# linq
  • 更新时间 :
  • 英文 :


我试图使用Linq返回一个列表,该列表由匹配最多到最少的项目排序。

我有一个由";"分隔的"相关标签"或"关键字"字符串:

a, b, c, d, e, f, g

我在数据库中有一个记录a,它有

a, b, c, d, e, f, g

我在数据库中有另一个记录Ba, b, c;

我想使用linq搜索数据库并返回记录a在列表中排名第一,记录B在列表中排名第二。

尝试:

dbContext2.Mains.where(x => x.VideoID == VideoID.ToString())
                .where( x=> x.Tags.Contains(ListOfKeyWords))
                .single();

我们可以从制定一个方法开始,该方法将给标记字符串:

评分。
public int GetScore(string contentTags, IEnumerable<string> relevantTags) {
      int score = 0;
      string[] splittedTags = contentTags.split(';');
      for(int i = 0; i < splittedTags.Length; i++) {
           if(relevantTags.Contains(splittedTags[i])) {
                score++;
           }
      }
      return score;
}

根据你的问题,你有一个类似的类:

public class MyContext : DbContext {
      public DbSet<Main> Mains { get; set; }
}

要获得给定相关性评分的Main记录的有序列表,您可以执行以下操作:

IEnumerable<Main> records = myContext.Mains.OrderByDescending(x => GetScore(x.Tags, ListOfKeywords));

相关内容

  • 没有找到相关文章

最新更新