[英]AsEnumerable and AsQueryable which one should be used in Client - WCF Service
我有一个服务,它返回类型List<Boss>
的数据。
此问题纯粹取决于服务调用,而不是数据库上下文
模型类是
public class Boss
{
public int ID { get; set; }
public int SID { get; set; }
public string Name { get; set; }
public string Department { get; set; }
public string Gender { get; set; }
public string Role { get; set; }
public List<Person> Employees { get; set; }
}
public class Person
{
public int ID { get; set; }
public int SID { get; set; }
public string Name { get; set; }
public string Department { get; set; }
public string Gender { get; set; }
public string Role { get; set; }
public List<PayrollInfo> PayInfo { get; set; }
}
public class PayrollInfo
{
public int Monthof2015 { get; set; }
public int NetWorkingDays { get; set; }
public int AbsentDays { get; set; }
}
试想一下服务
[OperationContract]
List<Boss> GetDataMale();
方法概述
public List<Boss> GetDataMale()
{
using(var db = new DBContext)
{
return db.Boss.Where(x => x.Gender == "Male").ToList();
}
}
现在考虑客户端:
using(var client = new ServiceProvider())
{
var bListEnum = client.GetDataMale().AsEnumerable().Where(m => m.Role == "Manager");
var bListQuery = client.GetDataMale().AsQueryable().Where(m => m.Role == "Manager");
}
让我知道客户中哪一个更可取? 请解释这两个语句的操作区别。
var bListEnum = client.GetDataMale().AsEnumerable().Where(m => m.Role == "Manager"); var bListQuery = client.GetDataMale().AsQueryable().Where(m => m.Role == "Manager");
您的服务器返回一个列表。 在客户端,这将被转换为List<>
或数组。 但是两者都已经实现了IEnumerable<>
因此答案是: 都没有 。 放下
var managers = client.GetDataMale().Where(m => m.Role == "Manager");
您可以在此处找到关于AsQueryable()
很好的解释。 基本上,您知道您有一个内存中的集合,并且您的操作不需要IQueryable<>
,在这里调用AsQueryable()
不会为您做任何事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.