2011-04-20 33 views
0

我有一個LINQ2SQL查詢來檢索一個ID(PK,非空)。查詢:如何從LINQ2SQL查詢中獲得可爲空的項目?

int masterEntityID; 
int payeeID; 
int chargePayeeID; 
try 
{ 
    using (TestDataContext os = new TestDataContext()) 
    { 
     string entityName = tbSearch.Text; 

     var getMasterID = from r in os.Entities 
          where r.Name == entityName 
          select r.ID; 

     masterEntityID = getMasterID.First(); //this is working FINE! 

     var getPayeeID = from pid in os.Entities 
         where pid.Name == entityName 
         select pid.Payee_ID; 

     payeeID = getPayeeID.First(); //This is giving me an err: Cannot implicitly convert type 'int?' to 'int'. An explicit conversion exists (are you missing a cast?) 



    }; 

數據類型:ID和Payee_ID都是int。但ID是Pkey,Payee_ID不是!

如何將getPayeeID的值轉換爲payeeID?謝謝!

+0

可能重複[如何從 '可空' 返回 '的Guid' ?](http://stackoverflow.com/questions/5668673/how-to-return-a-guid-from-a-nullableguid) – 2011-04-20 14:57:59

回答

3
getPayeeID.First().GetValueOrDefault() 
速記210
+0

這是最好的(最安全)的選擇,只要你很高興有價值當返回空值時設置爲0編輯。忘記了這種方法。 – 2011-04-20 14:57:48

+0

謝謝安迪!這工作:) – 2011-04-20 15:04:17

+0

GetValueOrDefault應該返回null如果Payee_ID是可爲空的屬性或即時消息丟失的東西 – 2011-04-20 15:05:17

2

如果您確信Payee_Id永遠不會爲空,然後只投值:

payeeID = (int)getPayeeID.First(); 
1

由於該值int?可以使用Value財產從它那裏得到的int

payeeID = getPayeeID.First().Value; 

int?Nullable<int>

1

您可以使用FirstOrDefault()或將payeeID聲明爲int嗎?然後根據需要使用它(如果它爲空,則應該嘗試執行任何操作......)

-1

似乎實體的Payee_ID屬性爲空,這是因爲它表示數據庫中的可爲空的列。所以,你不應該在int中接受它的值,而這個值是不可空的。你可以像null那樣得到它的值。

int? payeeID = payeeID = getPayeeID.FirstOrDefault(); 

var payeeID = payeeID = getPayeeID.FirstOrDefault(); 

後,你可以檢查是否payeeID值爲空或不使用的

if(payeeID.HasValue) 
{ 
     int x = payeeID.Value; //Value property of nullable int is an integer value and accessing it would through exception if HasValue property is false 
} 
+0

FirstOrDefault將返回可爲空的類型的默認值一片空白。因此,如果getPayeeId的第一項爲空,它將返回0。 – 2011-04-20 15:57:19

+0

默認(int?)爲null不是0 – 2011-04-20 16:10:10