Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于linq的.NET MVC类对象_C#_Asp.net Mvc_Linq - Fatal编程技术网

C# 用于linq的.NET MVC类对象

C# 用于linq的.NET MVC类对象,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我有一节课 public class AClass { public string AA { get; set; } public string AB { get; set; } } 在林克 var x = (from oo in db.AClass select new AClass() { AA = oo.AA, BB = oo.BB }).ToList(); 问题是:AA是否只能在LINQ启动时访问?在那之后我希望它是私人的?所以API调用或其

我有一节课

public class AClass 
{
     public string AA { get; set; }
     public string AB { get; set; }
}
在林克

var x = (from oo in db.AClass 
         select new AClass() { AA = oo.AA, BB = oo.BB }).ToList();
问题是:AA是否只能在LINQ启动时访问?在那之后我希望它是私人的?所以API调用或其他开发人员将不会访问此字段

如果这个类没有在LINQ中应用,我可以将AA放入构造函数中。不幸的是,LINQ不支持带参数的构造函数

所以我想知道是否有什么诀窍可以实现它

谢谢

问题是:AA是否只能在LINQ启动时访问?在那之后我希望它是私人的?所以API调用或其他开发人员将不会访问此字段

设计非web API与普通的windows、服务、web或移动编程有很大不同。其思想是不使用任何可以在客户端更改的数据类型

以您问题中的列表为例,最终用户可以添加、删除等。您最好使用IEnumerable


这样,它对其他开发人员是私有的,并且作为API调用响应不能被篡改。

不能使用初始化列表初始化私有属性。使用带有init关键字的c9,可以初始化只读的公共属性。如果您希望它是私有的,请使用构造函数。我不能使用构造函数,因为类在LINQ中应用,并且它会抛出错误。如果我使用带参数的构造函数,LINQ中只支持无参数构造函数和初始化器。执行以下操作有一些缺点,即不完全懒惰,但是您可以在db.AClass上调用ToList,这将为您提供正常的Linq操作。@Hayden,我使用原始Linq而不是调用.Where或.FirstOfDefault之类的函数,因为需要从多个关联表中获取很少的值。我必须在ToList之前首先选择对象,或者我需要将类初始化和查询选择分开,或者两次分配属性值。