111,094
社区成员




class Program
{
static void Main(string[] args)
{
int num = 0;
DBTable db = new DBTable();
var query = from b in db.ScoreList
join a in db.StudentList
on b.No equals a.No
where b.Score.Equals("A") ||(int.TryParse(b.Score,out num) && int.Parse(b.Score) > 90 ) || b.Subject == "数学"
select new
{
No = a.No,
Name = a.Name,
Subject = b.Subject,
Score = b.Score
};
query.ToList().ForEach((x) =>
{
Console.WriteLine(x.No + "|" + x.Name + "|" + x.Subject + "|" + x.Score);
});
Console.ReadLine();
}
public class DBTable
{
public List<Student> StudentList { get; set; }
public List<StudentScore> ScoreList { get; set; }
public DBTable()
{
StudentList = new List<Student>();
ScoreList = new List<StudentScore>();
StudentList.Add(new Student() { No = "01", Name = "张三" });
StudentList.Add(new Student() { No = "02", Name = "李四" });
StudentList.Add(new Student() { No = "03", Name = "麻子" });
ScoreList.Add(new StudentScore() { No = "01", Subject = "语文", Score = "99" });
ScoreList.Add(new StudentScore() { No = "01", Subject = "数学", Score = "A" });
ScoreList.Add(new StudentScore() { No = "02", Subject = "语文", Score = "93" });
ScoreList.Add(new StudentScore() { No = "02", Subject = "数学", Score = "B" });
ScoreList.Add(new StudentScore() { No = "03", Subject = "语文", Score = "89" });
ScoreList.Add(new StudentScore() { No = "03", Subject = "数学", Score = "C" });
}
}
public class Student
{
public string No { get; set; }
public string Name { get; set; }
}
public class StudentScore
{
public string No { get; set; }
public string Score { get; set; }
public string Subject { get; set; }
}
}
using(DbContext db = new DbContext())
{
var result = from p in db.[成绩表]
join a in db.[学生表] on p.[学生编号] equls a.[学生编号]
.where p.[科目] = "语文" and p.[成绩] > "90"
.select new { a.[学生姓名] }
.ToList();
}
是这么样的?[/quote]
是的,但是lamda中string是用不了大于号的,会报错
select
(case chengji when chengji>90 or chengji =='A' then 90)
from table
大概这样,和lamda有啥关系?
using(DbContext db = new DbContext())
{
var result = from p in db.[成绩表]
join a in db.[学生表] on p.[学生编号] equls a.[学生编号]
.where p.[科目] = "语文" and p.[成绩] > "90"
.select new { a.[学生姓名] }
.ToList();
}
是这么样的?
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int num = 0;
DBTable db = new DBTable();
var query = from b in db.ScoreList
join a in db.StudentList
on b.No equals a.No
where int.TryParse(b.Score, out num) && b.Subject=="语文"
select new
{
No=a.No,
Name = a.Name,
Subject=b.Subject,
Score=b.Score
};
query.ToList().Where(x=>int.Parse(x.Score)>90).ToList().ForEach((x) =>
{
Console.WriteLine(x.No+"|"+x.Name+"|"+x.Subject+"|"+x.Score);
});
Console.ReadLine();
}
public class DBTable
{
public List<Student> StudentList { get; set; }
public List<StudentScore> ScoreList { get; set; }
public DBTable()
{
StudentList = new List<Student>();
ScoreList = new List<StudentScore>();
StudentList.Add(new Student() { No = "01", Name = "张三" });
StudentList.Add(new Student() { No = "02", Name = "李四" });
ScoreList.Add(new StudentScore() { No="01",Subject="语文",Score="91"});
ScoreList.Add(new StudentScore() { No="01",Subject="数学",Score="B"});
ScoreList.Add(new StudentScore() { No="02",Subject="语文",Score="89"});
ScoreList.Add(new StudentScore() { No="02",Subject="数学",Score="86"});
ScoreList.Add(new StudentScore() { No="03",Subject="语文",Score="A"});
}
}
public class Student
{
public string No { get; set; }
public string Name { get; set; }
}
public class StudentScore
{
public string No { get; set; }
public string Score { get; set; }
public string Subject { get; set; }
}
}
}
int num=0;
var query=from a in db.学生表
join b in db.成绩表
on a.学生编号 equals b.学生编号
where b.成绩.CompareTo("90") >= 0
select new
{
name=a.学生姓名
};
执行看下,因为我现在的项目就是这样使用的,跟你的需求差不多
int num=0;
var query=from a in db.学生表
join b in db.成绩表
on a.学生编号 equals b.学生编号
where int.TryParse(b.成绩, out num) && num>90
select new
{
name=a.学生姓名
};