Linq 查询 Returns 条包含空白字符串数据的记录

Linq Query Returns Records Including Blank String Data

我创建了一个查询来从数据集中过滤选定的日期,例如,过滤字符串是 Day="M, W",我的 table 记录包含一个名为 DAYS_OFFERED 的列。数据可以是 M、W、MW、MWF、T、R 或“”等。我需要检索所有包含 M、W、MW 或 MWF 的记录。现在我的查询 returns 结果包括空白字符串数据。我的以下查询有什么问题:

var Courses= db.myTable;

if (Day != null)
{
   string items = Day.Split(',').ToString();
   Courses = Courses.Where(a => items.Contains(a.DAYS_OFFERED) || items.Replace(",",  string.Empty).Contains(a.DAYS_OFFERED));

 }

当您想使用 Contains 时,字符串数组是理想的选择。 Day.Split(',') 的结果是一个字符串数组,但您可以通过调用 .ToString() 将其转换回字符串。

如果您想检索问题中所说的所有包含 M、W、MW 或 MWF 的记录(这样您就不需要过滤字符串),您可以这样做:

string[] itemsIWant = {"M", "W", "MW",  "MWF"}; 
var myCourses = Courses.Where(a => itemsIWant.Contains(a.DAYS_OFFERED));

如果您要在 Contains 中使用过滤字符串,请事先删除任何不需要的项目,例如空字符串:

string[] items = Day.Split(',').Where(str => str != "").ToArray();
var filteredCourses = Courses.Where(a => items.Contains(a.DAYS_OFFERED));