我有一个sql语句,我必须将其转换为谓词以传递给方法。
select * from applications
where IsSuspended = 0
union
select * from Applications where
id not in
(select ApplicationAssociationId from Applications where ApplicationAssociationId is not NULL )
and IsSuspended = 1
我的方法调用是这样的。我尝试了许多其他方式,但没有取得成功。 :(
var resultList = someinstance.GetAll(
app=> app.IsSuspended = false)
.Union(someinstance.GetAll(
xap=>!xap.Id.Contains((xap.ApplicationAssociationId !=null).select(xap.Id)))
).ToList();
包含数据的表
预期结果
答案 0 :(得分:2)
目前尚不清楚为什么你需要一个工会。不仅仅是"或"条件?
var query = applications.Where(
x => !x.IsSuspended ||
!applications.Any(y => x.Id == y.ApplicationAssociationId));
(在第二种情况下,没有必要检查IsSuspended是否为真,好像它是假的,它已经包含在第一种情况中。)