求一个linq的写法(join)

bearben2010 bearben2010 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

public class Student
{
public String ID { get; set; }
public String StuName { get; set; }
}
public class Grade
{
public String ID { get; set; }
public String GrideName { get; set; }
}

//测试数据
List<Student> tempStuList = new List<Student>() {
new Student(){ ID="001001", StuName="a"},
new Student(){ ID="002001", StuName="b"},
new Student(){ ID="002001", StuName="c"},
new Student(){ ID="003001", StuName="d"},
new Student(){ ID="001001", StuName="e"},
};

List<Grade> tempGradeList = new List<Grade>() {
new Grade(){ ID="001", GrideName = "g1"},
new Grade(){ ID="002", GrideName = "g2"},
new Grade(){ ID="003", GrideName = "g3"},
};

说明一下:这里仅仅是讨论语法如何写,而不是讨论设计合理与否.这里只是举个例子
Stu.ID的前3位是年级ID,所以可以用下面的代码获取学生表与年级表的关联.这是一个很庆幸的例子.但是如果grade.ID是不定长的情况就无能为力了(不要管需求和实现是否合理,我只是寻求linq的语法).
我的问题是在做join的时候,linq能否写成 stu.ID.IndexOf(grade.ID) ==0类似的写法

var a = from stu in tempStuList
join grade in tempGradeList
on stu.ID.Substring(0, 3) equals grade.ID
into tempGradeTable
from tempItem in tempGradeTable
select new { StuID = stu.ID, StuName = stu.StuName, GradeName = tempItem == null ? "" : tempItem.GrideName };
...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
bearben2010
LINQ 8,492 成员 4,736 内容