2011-05-24 43 views
1

首先,我將描述我的表格結構。有兩個表,FormField和Field。如何在Linq中解決這個不同的問題?

一個字段可以鏈接到多個表單域,但一個表單域只能包含一個字段。

所以我有這樣的LINQ查詢:

var fields = from f in Data.Field.All() 
        join ff in formfields on f.Field_rid equals ff.Field_rid 
        select new 
        { 
         FormField = ff, 
         Field = f 
        }; 

現在,我需要把一個不同的地方在那裏,但我想不通的地方。基本上,我不希望相同的領域不止一次返回給我(所以我從來沒有得到一個重複的領域)。我將在哪裏使用獨特的功能?

回答

1

Distinct似乎沒有幫助你,如果你有多個formFieldsfield並且只想接收不同的fields。但是,如果你能想到一些方法只有一個formField所有領域的formFields選擇那麼就可以輕鬆完成:

// assumimg that for all fields we want to receive only formField with minimum Field_rid 
var fields = Data.Field.All() 
       .Select(f => new 
        { 
         Field = f, 
         FormField = formFields 
             .Where(ff => ff.Field_rid == f.Field_rid) 
             .OrderBy(ff => ff.Field_rid) 
             .FirstOrDefault(), 
        }); 
+0

那就是我一直在尋找的解決方案。 FirstOrDefault沒有問題,因爲理論上每個領域都不應該超過一個領域。 – Earlz 2011-05-24 21:01:04

+0

如果是這樣,那麼你可以用'Single()'替換'FirstOrDefault()'來檢驗你的理論是否仍然相關。 – Snowbear 2011-05-24 21:11:36