2011-02-23 128 views
2

問題我目前使用類似如下的數據結構:與動態搜索表達式在EF

public class Individual 
{ 
    //Other properties omitted for brevity sake 

    public List<IndividualName> IndividualNames {get; set;}    
} 

public class IndividualName 
{ 
    public string FamilyName {get; set;} 
    public string GivenName {get; set;} 
    public string MiddleName {get; set;} 
} 

我試圖用一些動態搜索表達式從通過我表示層到存儲庫級別(實際應用搜索)。

但是,我遇到了一些問題,因爲個人可以有1-M個人名稱,並且我試圖使用LINQ來獲取個人的所有個人姓名,以便他們可以被查詢。

例如的緣故 - 這是表達目前的樣子:

searchExpressions.Add(new SearchExpression("Individual 
              .IndividualNames 
              .Select(GivenName) 
              .FirstOrDefault()" 
      , ComparisonOperator.Contains, "Test"); 

這將目前只確定給定名稱的第一個INDIVIDUALNAME實例包含「測試」。上面的工作,因爲它應該 - 但是我有點卡在我將如何能夠確定是否任何IndividualNames包含字符串。

任何幫助將不勝感激 - 因爲我已經嘗試了幾件事情沒有任何運氣。

回答

0

我不知道這是適用於你的情況,但也許這lambda?

Individual.IndividualNames.Where(x => x.GivenName == "Test") 
+0

感謝您的建議梅納姆,但我仍然無法找到解決方案。動態搜索表達式至今尚未使用lambda表達式。 – 2011-03-04 15:43:14

+0

我看。那麼如何使用Contains()並實現IEquatable ? – Menahem 2011-03-06 06:59:34