You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LINQ方法语法处理含int与string类型的查询交集?

问题分析与解决方案

错误原因

你遇到的'string' does not contain a definition for 'Score'错误,核心问题是过早用Select(x => x.StudentName)把Student对象转换成了字符串类型,后续代码试图从字符串访问Score属性自然会报错;另外你把学生姓名、分数拆成独立集合处理,完全割裂了数据间的关联逻辑。

正确思路

  1. 一次性过滤出符合所有条件的学生:活跃状态(StudentActvity = true)、居住在加州(StudentCity = "CA")、姓名包含R/r或D/d。
  2. 从过滤后的结果中,同时获取学生姓名、分数,再计算平均分。

正确代码实现

using System;
using System.Collections.Generic;
using System.Linq;

namespace _64_LINQ_Practice
{
    class Program
    {
        static void Main(string[] args)
        {
            var studentList = StudentDatabase.GetStudentsFromDb();
            
            // 过滤符合所有条件的学生,保留完整数据关联
            var filteredStudents = studentList
                .Where(student => 
                    student.StudentActvity 
                    && student.StudentCity == "CA"
                    && (student.StudentName.IndexOf('R', StringComparison.OrdinalIgnoreCase) >= 0 
                        || student.StudentName.IndexOf('D', StringComparison.OrdinalIgnoreCase) >= 0));
            
            // 输出符合条件的学生姓名和分数
            Console.WriteLine("符合条件的学生信息:");
            foreach (var student in filteredStudents)
            {
                Console.WriteLine($"姓名:{student.StudentName},分数:{student.Score}");
            }
            
            // 计算并输出平均分(先判断是否有符合条件的学生,避免除以0异常)
            if (filteredStudents.Any())
            {
                var averageScore = filteredStudents.Average(student => student.Score);
                Console.WriteLine($"\n这些学生的平均分:{averageScore:F2}");
            }
            else
            {
                Console.WriteLine("\n没有符合条件的学生");
            }
        }
    }
}

代码说明

  • 用一次Where完成全条件过滤,保留Student对象的完整数据,确保姓名和分数的关联关系不丢失。
  • 使用IndexOf结合StringComparison.OrdinalIgnoreCase,可以更简洁地实现大小写不敏感的字符包含判断。
  • 添加Any()判断,避免没有符合条件的学生时调用Average抛出空集合异常。
  • 用字符串插值$""让输出格式更清晰易读。

内容的提问来源于stack exchange,提问作者yas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:50:23