2017-01-18 5 views
0

Ich habe ein NullableBIGINT Feld in der Datenbanktabelle.Query Nullable Spalte Linq zu Sql

Ich verwende linq zu sql, um Daten aus dieser Tabelle in C# abzurufen.

c.ExtensionID == (extensionID == 0 (long) null:? ExtensionID)

Das obige Stück Code ist, was ich bin derzeit mit, aber es zurückgibt mir nicht die Zeilen mit Null in ExtensionID Spalte.

aber wenn ich es wie c.ExtensionID == null verwende, dann wird es Datensätze zurückgeben.

Unten ist die vollständige LINQ zu SQL-Code.

var q = (from c in dbContext.Investments 
     join cd in dbContext.ContractContractorDetails 
     on c.ContractContractorId equals cd.ID 
     join cc in dbContext.ContractorCategories 
     on c.ContractorCategory equals cc.ID 
     join ic in dbContext.InvestmentCategories 
     on c.InvestmentCategory equals ic.ID 
     where c.InvestmentClassificationType == type && cd.ContractId.Equals(ContractID) && c.Phase == phase && c.ExtensionID == (ExtensionId == 0 ? (long?)null : ExtensionId) 
     select new 
     { 
      ID = c.ID, 
      Year = c.Year, 
      ContractorCategory = c.ContractorCategory, 
      ContractorCategoryName = cc.Name, 
      CompanyName = c.CompanyName, 
      InvestmentCategory = c.InvestmentCategory, 
      InvestmentCategoryName = ic.Name, 
      Summary = c.Summary, 
      IsContractRelated = c.IsContractRelated, 
      InvestmentAmount = c.InvestmentAmount, 
      Phase = c.Phase, 
      InvestmentClassificationType = c.InvestmentClassificationType, 
      ContractContractorId = c.ContractContractorId, 
      CreatedBy = c.CreatedBy, 
      LastUpdatedOn = c.LastUpdatedOn, 
      LastUpdatedBy = c.LastUpdatedBy, 
      Period=c.Period, 
      ExtensionId = c.ExtensionID 
     }).ToList(); 
+0

vielleicht '' 'extensionID ist nie 0 '. Überprüfe du 'ExtensionId = 0'? – Eldeniz

+0

Ja, ich habe überprüft, es gab mir keine Zeilen zurück. –

+0

Haben Sie wirklich Daten in der Datenbank für 'ExtensionID = null'? – Eldeniz

Antwort

0

Ich war in der Lage, das Problem mit dem unten genannten Code gelöst zu bekommen.

object.Equals(c.ExtensionID, (ExtensionId == 0 ? null : ExtensionId)) 

mit Hilfe von link