2017-08-10 70 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表中选择的一切,它加载到内存