0
條款我有一個POCO
實體,看起來像空支票其中EF
public class Rebate : IEntity
{
[Key]
public int Id { get; set; }
[ForeignKey("ClassOneId")]
public virtual ClassOne ClassOne { get; set; }
public int ClassOneId { get; set; }
[ForeignKey("ClassTwoCode")]
public virtual ClassTwo ClassTwo { get; set; }
public string ClassTwoCode { get; set; }
public double Rebate { get; set; }
}
如果ClassOne
有值ClassTwo
將是空,反之亦然,現在當我想運行一個查詢檢查name屬性
var predicate = PredicateBuilder.True<Rebate>();
if (!string.IsNullOrEmpty(term))
predicate = predicate.And(x => (x.ClassOne != null ?
x.ClassOne.Name.Contains(term) : x.ClassTwo.Name.Contains(term)));
OR
:使用linqkit
每個類的
在這兩種情況下,我都會得到結果,其中ClassOne
與期限匹配,但沒有結果,其中ClassTwo
匹配。
我對發生的事情的理解是,當ClassOne
爲空時,查詢失敗並且未檢查ClassTwo
的名稱屬性。我不確定的是如何解決這個問題,而無需單獨運行查詢併合並結果。
任何人有更好的計劃?