Как получить обнуляемый элемент из запроса LINQ2SQL? - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть запрос LINQ2SQL для получения идентификатора (PK, не NULL).Вот этот запрос:

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?Спасибо!

Ответы [ 5 ]

3 голосов
/ 20 апреля 2011
getPayeeID.First().GetValueOrDefault()
2 голосов
/ 20 апреля 2011

Если вы уверены, что Payee_Id никогда не будет нулевым, просто приведите значение:

payeeID = (int)getPayeeID.First();
1 голос
/ 20 апреля 2011

Вы можете использовать FirstOrDefault () или объявить payeeID как int?и затем используйте его как хотите (если он нулевой, вы должны попытаться сделать что-нибудь ...)

1 голос
/ 20 апреля 2011

Так как значение int?, вы можете получить int из него, используя свойство Value:

payeeID = getPayeeID.First().Value;

int? является сокращением для Nullable<int>

0 голосов
/ 20 апреля 2011

Похоже, что свойство Payee_ID вашей сущности имеет значение NULL, поскольку оно представляет столбец NULL в базе данных. таким образом, вы не должны получать его значение в int, которое не обнуляется. вы можете получить его значение в nullable int, как.

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...