我需要使用Linq检查数据库中ZPZ_Von列和ZPZ_Bis是否在相同日期具有相同次数。
我以为我是这样做的,但是在设置了Breik点之后,对我来说它仍然显示为4个值。请改正我出错的地方。
var ZPZ_VON = from n in arrivals where n.ZPZ_Von != null select n;
var ZPZ_BIS = from n in arrivals where n.ZPZ_Bis != null select n;
数据库中的此类数据如下。
答案 0 :(得分:1)
由于DateTime是一个结构,因此不能为null。因此,将值与null进行比较是没有用的,因为它们永远不会为null,但是您可以将它们与DateTime结构的default()
进行比较,因为它们可能就是这样。
我将使用Lambda表达式而不是查询表达式,因为我更喜欢它们,并且它们是C#代码而不是伪SQL
ZPZ_VON = n.Where(x => x.ZPZ_Von != default(DateTime)).ToList();
ZPZ_BIS = n.Where(x => x.ZPZ_Bis != default(DateTime)).ToList();
注意:我删除了评论中的x.ZPZ_VON != null
,因为它是多余的,我会编辑评论,但已经超过5分钟了
答案 1 :(得分:0)
您没有提供模型,但我怀疑您已将ZPZ_Von
设置为DateTime
。
基于OP,正确的设置是将ZPZ_Von
设为可空值:DateTime?
public class Arrival
{
public DateTime? ZPZ_Von { get; set;}
}
然后您可以像这样检查查询中的null:
n.Where(x => x.ZPZ_Von.HasValue).ToList();
简而言之,这使您的模型能够反映实际的数据库设置,并且从长远来看将避免您的头痛。
答案 2 :(得分:-1)
您应该尝试这个
export class MyComponent implements OnInit, OnDestroy {
$firstObservable: Observable<number> = timer(0, 1000);
$secondObservable: Observable<number> = timer(0, 1000);
private _subscriptions :any[] = [];
constructor() { }
ngOnDestroy(): void {
this._subscriptions .unsubscribe();
}
ngOnInit(): void {
this._subscriptions .push(
this.$firstObservable.subscribe(console.log)
);
this._subscriptions .push(
this.$secondObservable.subscribe(console.log)
);
}
ngOnDestroy(){
this._subscriptions.forEach(sub => sub.unsubscribe) ; // ♂️♂️
}
}