2013-09-27 25 views
1

當我嘗試對Raven DB運行以下查詢時,出現「不支持的表達式類型:System.Linq.Expressions.TypedParameterExpression」異常。Raven DB的TypedParameterExpression任何查詢

 var userIdsICareAbout = Session.Query<User>() 
      .Where(u => u.Username == username 
         || u.Managers.Any(m => m == username)) 
      .Select(u => u.Username) 
      .ToList(); 

     var kudos = Session.Query<Kudo>() 
      .Where(k => userIdsICareAbout.Any(u => u == k.GivingUserId) 
         || userIdsICareAbout.Any(u => u == k.ReceivingUserId)) 
      .ToList(); 

我能以某種方式做出這樣的查詢嗎?

謝謝, 馬特

+0

第二個查詢是失敗的一個,對不對?另外,如果k.GivingUserId是什麼類型? –

+0

您不需要從第一個查詢中提取用戶標識,而不是用戶名?另外,你可以使用'LoadDocument'建立一個靜態索引,它可以讓你做一個查詢而不是兩個查詢。 –

回答

1

您可以嘗試

var userIdsICareAbout = Session.Query<User>() 
     .Where(u => u.Username == username 
       || u.Managers.Any(m => m == username)) 
     .Select(u => u.Username) 
     .ToList(); 

    var kudos = Session.Query<Kudo>() 
     .Where(k => k.GivingUserId.In<string>(userIdsICareAbout) 
       || k.ReceivingUserId.In<string>(userIdsICareAbout) 
     .ToList(); 

您需要添加using Raven.Client.Linq以允許In<string>