public List<Tuple<int, int, int, string, int, int, Tuple<bool, bool, int?>>>
GetValues(int someId, int someOtherlId)
{
var t = new List<Tuple<int, int, int, string, int, int, Tuple<bool, bool, int?>>>();
using (var context = new Entities(ConnString))
{
var pc = context.SomeTable.Where(c => c.SomeId == someId &&
c.SomeOtherId == someOtherId).OrderBy(c => c.Id).ToList();
t.AddRange(pc.Select(cols => new Tuple<int, int, int, string, int, int, Tuple<bool, bool, int?>>
(cols.Id, cols.someId, cols.someOtherId, cols.ColumnName, cols.MinDataLength,
cols.MaxDataLength, new Tuple<bool, bool, int?>(cols.Required, cols.Eav.HasValue && cols.Eav.Value,
cols.AttribId.HasValue ? cols.AttribId.Value : null))));
}
return t;
}
}
無法弄清楚爲什麼這段代碼不會編譯並生成「沒有隱式'int'和'null'之間的轉換錯誤。試圖將null分配給可爲空的int結果「int'和'null'之間沒有隱式轉換」錯誤
在那第二個tuple int?被一致標記爲可爲空,所以爲什麼它被編譯器在t.AddRange
中檢測爲正常int,它生成「無法確定條件表達式的類型,因爲在cols.AttribId.HasValue ? cols.AttribId.Value : null
處不存在'int'和''」錯誤之間的隱式轉換。
任何想法?
Duplicate:http://stackoverflow.com/questions/858080/nullable-types-and-the-ternary-operator-why-is-10-null-forbidden?rq = 1 –
'Tuple'只是醜陋的!至少將這個類擴展到一個自定義類中! –
@ m-y也許,但它肯定會擊敗DTO,將數據從DAL轉移到BI層......至少在我的書中。 –