2010-05-13 46 views
0

我正在類似於nerddinner的網站上工作。是否有可能使用Linq執行類似的連接 在nerddinner中使用linq to sql完成的實體。 我在下面發佈代碼。asp.net mvc nerddinner問題linq實體加入問題

public IQueryable<Dinner> FindByLocation(float latitude, float longitude) { 
     var dinners = from dinner in FindUpcomingDinners() 
         join i in db.NearestDinners(latitude, longitude) 
         on dinner.DinnerID equals i.DinnerID 
         select dinner; 

     return dinners; 
    } 

我想用linq替換這個代碼實體實現。

問候

成員Parminder

+0

哪裏是你的問題?你是否想要找到db.NearestDinners的替代品?請解釋您使用EF公開的內容,以及可用的SP。 – Nix 2010-05-13 16:48:21

+0

我想使用現有的nerdinner應用程序中使用的所有函數和過程。 – Parminder 2010-05-13 16:54:19

回答

0

你能只是看它們相交等,其中:

FindUpcomingDinners().Intersect(db.NearestDinners(latitude, longitude)).ToList(); 

我不知道什麼FindUpcomingDinners回報,但最簡單的是將有兩個函數返回IEnumerablesFindUpcomingDinnersNearestDinners然後只是得到兩個列表的相交。

如:

List<Dinner> upcomingDinners = FindUpcomingDinners(); 
List<Dinner> nearestDinners = NearestDinners(latitude, longitude); 

List<Dinner> result = upcomingDinners.Intersect(nearestDinners).ToList(); 
+0

感謝Kelsey 但我得到了錯誤 「無法創建類型爲'System.Linq.EnumerableQuery'1'的常量值。在此上下文中僅支持基本類型(如Int32,String和Guid) 「。 Registers – Parminder 2010-05-14 03:20:13

+0

@Parminder你能想出來嗎?如果這個答案有助於你不忘記將其標記爲已接受的答案。 – Kelsey 2010-08-11 21:41:24

+0

謝謝,但它可能只在EF4。 – Parminder 2010-08-20 05:48:42