条件不支持超过 1 个条件



下面的代码我想使用多个条件,但它不支持它只接受一个条件p.score<=35它只显示所有记录p.score<=50但在此条件适用的记录不令人讨厌如何解决此问题。

cs=(from e in db.Students
  join p in db.Marks
  on e.S_ID equals p.S_ID
  join t in db.Details
  on p.School_ID equals t.School_ID
  where  p.Score<=35 && p.Score <=50
  select new MyModel
  {
      S_Name = e.S_Name,
      Score = (int)p.Score,
      Status = p.Status,
      Address_City = t.Address_City,
      Email_ID = t.Email_ID,
      Accomplishments = t.Accomplishments
  }).ToList();

考虑一个标记列表[15, 30, 35, 45, 50]

现在,根据您在代码中应用的条件, where p.Score<=35 && p.Score <=50

你会得到[15,30,35],因为这些元素同时满足两个条件(<=35&&<=50(

您不会得到[45,50],因为这些只满足一个条件(<=50(

由于您在两个条件之间应用了&&子句,因此标记需要通过这两个条件才能显示。仅传递一个条件是不够的。

因此,您需要更改where子句。

  1. 如果要显示所有小于或等于50的标记,则需要写where p.Score <=50
  2. 如果只想显示那些小于或等于50但大于或等于35的标记,则需要编写where p.Score>=35 && p.Score <=50
p.Score<=35 && p.Score <=50

与简单的p.Score<=35相同。

我假设你真的想要

p.Score >= 35 && p.Score <= 50

即分数在 35 到 50 之间?

将 p.Score<=35 && p.Score <=50 更改为 (p.Score

>=35 && p.Score <=50(。

cs=(from e in db.Students
join p in db.Marks
on e.S_ID equals p.S_ID
join t in db.Details
on p.School_ID equals t.School_ID
where  (p.Score>=35 && p.Score <=50)
select new MyModel
{
  S_Name = e.S_Name,
  Score = (int)p.Score,
  Status = p.Status,
  Address_City = t.Address_City,
  Email_ID = t.Email_ID,
  Accomplishments = t.Accomplishments
}).ToList();

最新更新