C# 找不到Linq to SQL Select第一个字母和distinct语句的解决方案

C# 找不到Linq to SQL Select第一个字母和distinct语句的解决方案,c#,linq,C#,Linq,我有以下功能。我的目标是展示课程主题的第一个字母。 我得到的错误是 无法隐式转换类型System.Collections.Generic.List' 到“System.Collections.Generic.List…” 我的代码 我该如何解决这个问题? 谢谢。试试这个 public List<string> GetTutoringSubjectsLetters() { using (JewroOnlineDataContext dc = conn.GetContext())

我有以下功能。我的目标是展示课程主题的第一个字母。 我得到的错误是

无法隐式转换类型System.Collections.Generic.List' 到“System.Collections.Generic.List…”

我的代码

我该如何解决这个问题? 谢谢。

试试这个

public List<string> GetTutoringSubjectsLetters()
{
    using (JewroOnlineDataContext dc = conn.GetContext())
    {
        return dc.SchoolSubjects.Select(s => s.SubjectName.Substring(0, 1)).Distinct().ToList();
    }
}
如果要将linq查询的结果转换为列表,则必须调用ToList,但是,除非需要从结果集中动态添加或删除项,否则可能不需要将其转换为列表

此外,如果您只想返回包含第一个字母的字符串,则无需返回对象SchoolSubject或匿名类型。您只需返回一组字符串作为结果

我推荐这样的东西:

public IEnumerable<string> GetTutoringSubjectsLetters()
{
    using (JewroOnlineDataContext dc = conn.GetContext())
    {
        return (from s in dc.SchoolSubjects
                select s.SubjectName.Remove(1))
               .Distinct();
    }
}

新的{s.SubjectName}不是一个SchoolSubject@Albert,您是否尝试过我们的解决方案?为什么需要s.Remove1?问题是,它应该只得到不同的首字母。您能纠正我吗?@PrasadKanaparthi抱歉,那应该是s.SubjectName.Remove1,它返回字符串中的第一个字母。从您那里学习得很好。删除与子字符串0,1类似的索引[从零开始删除字符的位置]。我说的对吗?谢谢。@PrasadKanaparthi是的,.Removex与.Substring0,x相同。谢谢大家提供了一个很好的解决方案。
public IEnumerable<string> GetTutoringSubjectsLetters()
{
    using (JewroOnlineDataContext dc = conn.GetContext())
    {
        return (from s in dc.SchoolSubjects
                select s.SubjectName.Remove(1))
               .Distinct();
    }
}
return dc.SchoolSubjects.Select(s => s.SubjectName.Remove(1)).Distinct();