2015-05-05 80 views
0

我試着輸入一些數據到一個名爲「Cost」的ViewData。這是從數據庫中的「PrinterCreditsCost」列取值,並顯示該列的值。但是,列名也顯示爲大括號,與僅顯示「2」相反,它顯示「{PrinterCreditCost = 2}」。有誰知道我該如何才能使它只顯示「2」。這是要在一個數學公式中使用,所以我只需要2ViewData顯示數據庫列名稱

的代碼如下:

傑森
var result = (from a in db.tblOptions.Include(t => t.PrinterCreditCost) 
where a.ID == 1 
select new 
{ 
    a.PrinterCreditCost 
} 
).First(); 
ViewData["Cost"] = result; 

更新:

 public int ID { get; set; } 
    public int Visible { get; set; } 
    public int DeleteLicense { get; set; } 
    public Nullable<int> ICTSurvey { get; set; } 
    public Nullable<int> PaidWorkSurvey { get; set; } 
    public Nullable<int> ICTGeneralSurvey { get; set; } 
    public Nullable<int> PESSCLSurvey { get; set; } 
    public Nullable<int> PastSurvey { get; set; } 
    public Nullable<int> PresentSurvey { get; set; } 
    public Nullable<int> Yr11Survey { get; set; } 
    public Nullable<int> NewScientistCount { get; set; } 
    public Nullable<int> UCASYear { get; set; } 
    public Nullable<int> OnlineSurveyActive { get; set; } 
    public Nullable<int> OnlineExaminationsActive { get; set; } 
    public string UCASFirstHalf { get; set; } 
    public string UCASSecondHalf { get; set; } 
    public string SIMSManual { get; set; } 
    public string SIMSApplication { get; set; } 
    public string SIMSAmpark { get; set; } 
    public Nullable<double> PrinterCreditFund { get; set; } 
    public Nullable<int> PrinterCreditCost { get; set; } 
    public string UCASIndividualFirstHalf { get; set; } 
    public string UCASIndividualSecondHalf { get; set; } 
    public string BookingSheetYear { get; set; } 
    public Nullable<System.DateTime> InductionDate { get; set; } 
    public string InductionYear { get; set; } 

    public virtual ICollection<tblPrinterCredit> tblPrinterCredits { get; set; } 

回答

0

在此位查詢

select new 
{ 
    a.PrinterCreditCost 
} 

的是有你需要使用如的PrinterCreditCost屬性

select new 
{ 
    a.PrinterCreditCost.Value 
} 

我不知道,如果Value是你需要的屬性,它可以被稱爲別的東西。

就目前而言,它確實看起來像您的查詢正在返回列定義,而不是該列的值。

編輯:

我看到以下內容:

public Nullable<int> PrinterCreditCost { get; set; }

所以我很驚訝,

select new 
{ 
    a.PrinterCreditCost.Value 
} 

不工作。因爲它是可空的值,所以.Value屬性應該返回值,而不是{ Value = 2 }。我不確定那裏發生了什麼。

+0

嘗試添加.Value並給出了類似的結果。 「PrinterCreditCost = 2」而不是「Value = 2」 –

+0

您可以發佈「PrinterCreditCost」類的代碼嗎? –

+0

我會用它更新問題。對於這個特定的控制器來說,它是完全多餘的,因爲它是值得的。該表涉及到很多其他表格等。 –

0

一種可能的方式是將結果存儲在字符串中,並選擇該存儲的字符串的子字符串並將其分配給查看數據。

string abc = result; 
    string viewdatastring = abc.substring(20); 
    ViewData[Cost]= viewdatastring 

只是看看這裏的教程子

http://www.dotnetperls.com/substring

+0

不幸的是,它是一個int而不是一個字符串,所以不能使用字符串。 –

+0

使用Tostring方法將int轉換爲字符串,如果需要,也可以使用int.parse方法將其轉換回int。您可以通過Google搜索獲得大量示例。 – BSG

+0

將看看它:)。謝謝! –

0
var result = (from a in db.tblOptions.Include(t => t.PrinterCreditCost) 
where a.ID == 1 
select new 
{ 
    a.PrinterCreditCost 
} 
).First(); 
ViewData["Cost"] = result; 

不正確,但是,將其更改爲:

var result = (from a in db.tblOptions.Include(t => t.PrinterCreditCost) 
where a.ID == 1 
select new 
{ 
    a.PrinterCreditCost 
} 
).First(); 
ViewData["Cost"] = result.Value; 

(加.value的)到ViewData的行會工作結束。