C# 是否有更好的性能';如何在ASP MVC中只获取少数列,而不获取整个表并使用LinQ进行过滤?
我正在调用一个包含200000行和6列的表,但我只希望其中的2列在一个控制器中使用,因此我想知道是否有更好的方法可以在不影响性能的情况下从服务器调用它们,因为我知道Linq查询得到整个表并进行过滤,我认为可能视图是一种好方法,但我想知道是否还有其他更好的,谢谢 例如:C# 是否有更好的性能';如何在ASP MVC中只获取少数列,而不获取整个表并使用LinQ进行过滤?,c#,asp.net,asp.net-mvc,performance,linq,C#,Asp.net,Asp.net Mvc,Performance,Linq,我正在调用一个包含200000行和6列的表,但我只希望其中的2列在一个控制器中使用,因此我想知道是否有更好的方法可以在不影响性能的情况下从服务器调用它们,因为我知道Linq查询得到整个表并进行过滤,我认为可能视图是一种好方法,但我想知道是否还有其他更好的,谢谢 例如: var items = from i in db.Items select new {i.id,i.name}; 如果我有1.000.000个项目,服务器会有问题吗?您最初的假设是错误的 通常,LINQ查询不会得到整个表。查询被
var items = from i in db.Items select new {i.id,i.name};
如果我有1.000.000个项目,服务器会有问题吗?您最初的假设是错误的 通常,LINQ查询不会得到整个表。查询被转换为“服务器端表达式”(即SQL语句),该语句在服务器上解析,只返回请求的数据 给定您提供的语句,您将只返回两列,但如果不进行任何筛选,结果中将包含1000000个对象。但这不是LINQ的问题,这是你不过滤的问题。如果包含一个
where
子句,则只能获得所请求的行
var items = from i in db.Items
where i.Whatever == SomeValue
select new { i.id, i.name };
原始查询将(大致)转换为以下SQL:
SELECT id, name FROM Items
您没有包含where
子句,因此您将获得所有内容
对于包含where
子句的版本,将生成以下SQL:
SELECT id, name FROM Items WHERE Whatever = SomeValue
只有符合条件的行才会返回到应用程序并转换为对象。您最初的假设不正确 通常,LINQ查询不会得到整个表。查询被转换为“服务器端表达式”(即SQL语句),该语句在服务器上解析,只返回请求的数据 给定您提供的语句,您将只返回两列,但如果不进行任何筛选,结果中将包含1000000个对象。但这不是LINQ的问题,这是你不过滤的问题。如果包含一个
where
子句,则只能获得所请求的行
var items = from i in db.Items
where i.Whatever == SomeValue
select new { i.id, i.name };
原始查询将(大致)转换为以下SQL:
SELECT id, name FROM Items
您没有包含where
子句,因此您将获得所有内容
对于包含where
子句的版本,将生成以下SQL:
SELECT id, name FROM Items WHERE Whatever = SomeValue
只有符合条件的行才会返回到应用程序并转换为对象