2015-05-05 3 views
0

Я попытался ввести некоторые данные в ViewData под названием «Стоимость». Это берет значение из столбца «PrinterCreditsCost» в базе данных и должно отображать значение этого столбца. Тем не менее, имя столбца также отображается с фигурными скобками, так как вместо отображения «2» отображается «{PrinterCreditCost = 2}». Кто-нибудь знает, как я могу его использовать, чтобы он отображал только «2». Это будет использоваться в математическом уравнении, так что мне нужно только 2.ViewData, отображающий имя столбца базы данных

код выглядит следующим образом:

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 это свойство вам нужно, это можно было бы назвать что-то еще.

Как бы то ни было, он действительно выглядит так, как будто ваш запрос возвращает определение столбца, а не значение этого столбца.

EDIT:

я вижу следующее:

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

Так что я удивлен, что

select new 
{ 
    a.PrinterCreditCost.Value 
} 

не работает. Поскольку это значение с нулевым значением, свойство .Value должно вернуть значение, а не { Value = 2 }. Я не уверен, что там происходит.

+0

Пробовал добавлять .Value и дает аналогичный результат. Вместо «PrinterCreditsCost = 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

конвертировать int в строку, используя метод Tostring, и вы также можете преобразовать обратно в int, если требуется, с помощью метода int.parse. Вы можете найти множество примеров, выполнив поиск по 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 будет работать.