2017-08-10 60 views
-5

如何將字符串轉換爲使用LINQ的整數?如何使用LINQ將asp.net mvc字符串轉換爲int?

請參閱下面的內容,瞭解到目前爲止所嘗試的內容。

public ActionResult ViewStudent() 
{ 
var std = from s in db.Students 
      select new StudentViewModel() 
      { 
      student_id = s.student_id, 
      student_name = s.student_name, 
      student_age =s.student_age, 
      student_address = s.student_address 
      }; 

    var age = std.Average(s => Convert.ToInt32(s.student_age));//error 
    var nostd = std.Count(); 
    ViewBag.totalstd = nostd; 
    ViewBag.stdage = age; 

    return View(std); 
} 
+1

你遇到什麼問題?你沒有描述一個問題。 –

+0

如何將字符串轉換爲int。而運行類似這樣的問題附加信息:LINQ to Entities不能識別方法'Int32 ToInt32(System.String)'方法,並且此方法無法轉換爲存儲表達式。 – BijayDhimal

+1

請[編輯]您的問題,以提供從一開始就應該有的附加信息。 –

回答

0

假設您有一個可解析爲整數的字符串列表。

List<string> intList = new List<string>() { "1", "2" }; 
List<int> convertedList = intList.Select(x => Convert.ToInt32(x)).ToList(); 

這將淨賺你可比整數的列表,請在考慮所有的值必須是「可轉換」的字符串,如「123」等

編輯:如果你想它平均所有,你的語法是錯誤的。 你需要先和平均後轉換:

double avg = intList.Select(x => Convert.ToInt32(x)).Average(); 
+0

但如何將其轉換爲asp.net mvc – BijayDhimal

+0

asp.net mvc是c#的所有預期用途,這是如何使用LINQ將字符串列表轉換爲整數。 〜如果這不是你要找的東西,你需要在你的問題中提供更多細節。 –

+0

另一個選項是'intList.Select(int.Parse).ToList();' –

1

你可以做到以下幾點:

的方法來嘗試解析到INT32:

public static int ParseInt32(string str, int defaultValue = 0) 
{ 
    int result; 
    return Int32.TryParse(str, out result) ? result : defaultValue; 
} 

而在你的LINQ語句,做此:

var age = std.Average(s => ParseInt32(s.student_age)); 
+0

student_age在字符串中。 – BijayDhimal

+0

好的,然後使用我建議的解決方案。這將爲你工作。ParseInt32會嘗試將傳遞的字符串(student_age)解析爲int,如果成功,則返回int,如果不是,則返回0。所以你會避免例外和錯誤 –

+0

哦,alaa_Sayegn我是新的在asp.net mvc。我正在使用LINQ查詢。我很疑惑哪些查詢是更好的sql查詢或asp.net mvc中的linq查詢。 – BijayDhimal

3

Linq to Entities不知道如何轉換Convert.ToInt32轉換爲SQL

您可以更新數據庫,以便年齡列爲int而不是string

或者您可以使用ToList(),以便您使用Linq到對象。

因此,像這樣:

public ActionResult ViewStudent() 
{ 
    var std = (from s in db.Students 
     select new StudentViewModel() 
     { 
     student_id = s.student_id, 
     student_name = s.student_name, 
     student_age =s.student_age, 
     student_address = s.student_address 
     }).ToList(); 

    var age = std.Average(s => Convert.ToInt32(student_age)); 
    var nostd = std.Count(); 
    ViewBag.totalstd = nostd; 
    ViewBag.stdage = age; 

    return View(std); 
} 

請注意,雖然這會從數據庫中db.Students表中選擇的一切,它加載到內存