我有一个像这样的数据库:
检测器:
DetectorID SiteID TrackID
1401 1400 2
1402 1400 2
1601 1600 2
1602 1600 2
DetectorStatus:
DetectorStatusID DetectorID DateTime DetectorModeID Status
1 1601 TimeStamp 2 0.86
2 1602 TimeStamp 2 0.84
现在我有一个过滤器让我可以根据他们的DetectorMode看到探测器。
代码:
var query = loadOperation.Entities; //Define the query
if (ShowAtlas == false && ShowPhoenix == false || ShowAtlas == true && ShowPhoenix == true)
{
if (filterany1.IsChecked == true)
{
query = query.OrderBy(d => d.SiteName);
}
if (filterok1.IsChecked == true)
{
query = query.Where(d => d.Detectors.Count(t => t.DetectorStatus.Count(a => a.DetectorModeID == 2) > 0) > 0);
}
if (filtermaintenance1.IsChecked == true)
{
query = query.Where(d => d.Detectors.Count(t => t.DetectorStatus.Count(a => a.DetectorModeID == 3 || a.DetectorModeID == 4 || a.DetectorModeID == 5) > 0) > 0);
}
if (filternotworking.IsChecked == true)
{
query = query.Where(d => d.Detectors.Count(t => t.DetectorStatus.Count(a => a.DetectorModeID == 6 || a.DetectorModeID == 7) > 0) > 0);
}
}
现在,当探测器未知时。它不会出现在 DetectorStatus 表中。如示例中所示。 DetectorID的 1401 和 1402 未知。
当我过滤时:
if (filternotworking.IsChecked == true)
{
query = query.Where(d => d.Detectors.Count(t => t.DetectorStatus.Count(a => a.DetectorModeID == 6 || a.DetectorModeID == 7) > 0) > 0);
}
我还想订购未知的探测器类型。
我怎么做到这一点?
因为现在我算结果。但如果什么都没有,它就不会显示任何东西。
对于过滤器。
DetectorModes告诉我探测器的状态。例如:
2 =系统正常
7 =离线
但是,当检测器不在 DetectorStatus 表中时。它显然在此表中没有任何值。 在这种情况下,探测器的模式为“未知” 我希望能够过滤Unknow系统类型。
答案 0 :(得分:3)
这个怎么样:
query = query.Where(d => d.Detectors.Count(t => t.DetectorStatus.Count() == 0) > 0);
但我希望Any()
代替Count()>0
,如果可用的话。