C#常用的LinQ方法

发布于:2025-07-14 ⋅ 阅读:(19) ⋅ 点赞:(0)

LINQ(Language Integrated Query)是 .NET 中用于处理集合的强大工具,它提供了多种方法来简化数据查询和操作。以下是一些常用的 LINQ 方法及其功能:

  1. Where: 根据指定的条件筛选集合中的元素。
    var filteredResults = matchResults.Where(m => m.Confidence > 0.5);
  2. Select: 从集合中选择特定的字段或类型。
    var labels = matchResults.Select(m => m.Label1);
  3. Any: 检查集合中是否存在任何满足条件的元素。
    bool hasMatches = matchResults.Any(m => m.Label1 == "label"&& m.Confidence > 0.6);
  4. All: 检查集合中的所有元素是否满足指定条件。
    bool allHighConfidence = matchResults.All(m => m.Confidence > 0.5);
  5. First: 返回集合中的第一个元素,或满足条件的第一个元素。
    var firstMatch = matchResults.First(m => m.Confidence > 0.6);
  6. FirstOrDefault: 返回集合中的第一个元素,或满足条件的第一个元素,如果没有则返回默认值。
    var firstOrDefaultMatch = matchResults.FirstOrDefault(m => m.Confidence > 0.6);
  7. Single: 返回集合中唯一的元素,或满足条件的唯一元素,如果没有或有多个则抛出异常。
    var singleMatch = matchResults.Single(m => m.Label1 == "uniqueLabel");
  8. SingleOrDefault: 返回集合中唯一的元素,或满足条件的唯一元素,如果没有则返回默认值,如果有多个则抛出异常。
    var singleOrDefaultMatch = matchResults.SingleOrDefault(m => m.Label1 == "uniqueLabel");
  9. Count: 计算集合中元素的数量。
    int count = matchResults.Count(m => m.Confidence > 0.5);
  10. Sum: 计算集合中某个字段的总和。
    double totalConfidence = matchResults.Sum(m => m.Confidence);
  11. Average: 计算集合中某个字段的平均值。
    double averageConfidence = matchResults.Average(m => m.Confidence);
  12. Max: 返回集合中某个字段的最大值。
    double maxConfidence = matchResults.Max(m => m.Confidence);
  13. Min: 返回集合中某个字段的最小值。
    double minConfidence = matchResults.Min(m => m.Confidence);
  14. OrderBy 和 OrderByDescending: 对集合进行排序。
    var orderedResults = matchResults.OrderBy(m => m.Confidence);
    var orderedResultsDesc = matchResults.OrderByDescending(m => m.Confidence);
  15. GroupBy: 根据指定的键将集合分组。
    var groupedResults = matchResults.GroupBy(m => m.Label1);
  16. Distinct: 返回集合中不同的元素。
    var distinctLabels = matchResults.Select(m => m.Label1).Distinct();

使用示例:

        var matchResults = new List<DetectTXTClass.MatchResult>();   //存储匹配边框
        var DetectResults = new List<DetectTXTClass.DetectResult>();  //存储制作边框                                      


        //遍历每个模板文件进行匹配
        foreach (var templateFile in templateFiles)
        {

            string label = Path.GetFileNameWithoutExtension(templateFile).Split('_')[0];
            bool found = matchResults.Any(matchResult => matchResult.Label1 == label && matchResult.Confidence > 0.7);// 使用 LINQ 简化判断,满足条件就返回Trur
            if (found) //matchResults存在label并且置信度大于0.7,直接跳过
            {
                continue; 
            }
         }


网站公告

今日签到

点亮在社区的每一天
去签到