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之前首先选择对象,或者我需要将类初始化和查询选择分开,或者两次分配属性值。