如何解决Linq SelectMany生成空列表
我有StudentsList
的100多名学生。
public class Student
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private string _subject;
public string Subject
{
get { return _subject; }
set { _subject = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age= value; }
}
}
输入主题时,我想用包含该主题的所有学生的姓名单独制作List<string>
。
我尝试过
List<string> results= new List<string>();
results = students.Where(x => x.Subject.Contains("Science")).SelectMany(x => x.Name).ToList();
当我尝试此Linq查询时,它生成了Null结果。列表中没有任何内容。
解决方法
您需要使用a = 'Chicago'
b = 2500
print('The city with the most contracts is:')
print(a + ' (' + str(b) + ' contracts)')
而不是.Select()
.SelectMany()
我们什么时候使用.SelectMany()
?
让我们考虑一下,我们在每一所学校中都有
results = students .Where(x => x.Subject.Contains("Science")) //Filter by Subject .Select(x => x.Name) //Select only Name. .ToList(); //Convert to List
List<School>
,我们希望所有学校的所有理科学生都 我们需要从学校列表中拉平学生列表的时间。
我们什么时候使用.Select()
?
,当我们要遍历学生列表并生成时 新表格,即只读取其中的姓名。
您正在检查主题字符串是否包含子字符串“ Science”,而不是检查看起来像您想要的主题为“ Science”的学生。您的代码应改为这样;
var results = students.Where(s => s.Subject == "Science").ToList();
编辑:如果只需要名称而不是Student
对象,则可以向查询中添加Select()
:
var names = students
.Where(s => s.Subject == "Science")
.Select(s => s.Name)
.ToList();
,
听起来您实际上想使用Select()
而不是SelectMany()
。前者会将单个属性投射到新集合中。
尝试一下:
results = students.Where(x => x.Subject.Contains("Science")).Select(x => x.Name).ToList();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。