我是LINQ查询和EF的新手,我通常使用MySQL,我无法猜测如何编写非常简单的查询。
我想从表格中选择所有结果。所以,我这样使用:
ZXContainer db = new ZXContainer();
ViewBag.ZXproperties = db.ZXproperties.All();
但我发现我必须在All(---)中写一些东西。
有人可以指导我怎么做?如果有人也有任何好的参考链接,我非常感谢。
答案 0 :(得分:6)
All()
是对集合中所有元素执行的布尔值评估(虽然当它到达评估为false的元素时立即返回false),例如,您要确保所有表示ZX属性将某个字段设置为true:
bool isTrue = db.ZXproperties.All(z => z.SomeFieldName == true);
哪个会使isTrue
成为真或假。 LINQ通常是延迟加载的,所以如果你直接调用db.ZXproperties
,你可以按原样访问所有对象,但它并不是你想要的。您可以使用.ToList()
加载变量赋值中的所有对象:
ViewBag.ZXproperties = db.ZXproperties.ToList();
或者您可以使用以下表达式:
ViewBag.ZXproperties = from s in db.ZXproperties
select s;
除了说:
之外没什么不同ViewBag.ZXproperties = db.ZXproperties;
.ToList()
的优点是,如果您想在此ViewBag.ZX属性上执行多次调用,则在分配变量时只需要初始数据库调用。或者,如果您对数据执行任何形式的可查询操作(例如.Where()
),您将执行另一个查询,如果您已经拥有要使用的数据,则该查询不太理想。
答案 1 :(得分:1)
要选择所有内容,只需跳过.All(...)
,因为ZX属性已经是一个集合。
ZXContainer db = new ZXContainer();
ViewBag.ZXproperties = db.ZXproperties;
在使用之前,您可能希望(有时甚至需要)在此集合上调用.ToList()
...
答案 2 :(得分:0)
您不使用全部。只需输入
即可ViewBag.ZXproperties = db.ZXproperties;
或
ViewBag.ZXproperties = db.ZXproperties.ToList();
答案 3 :(得分:0)
您可以使用:
var result = db.ZXproperties.ToList();
有关linq的更多信息,请参阅101 linq sample
。
所有都是检查其中的所有项目和参数,称为lambda expression
。
答案 4 :(得分:0)
All方法用于确定所有收集项是否符合某些条件。
如果您只想要所有物品,可以直接使用:
ViewBag.ZXproperties = db.ZXproperties;
如果您希望立即进行评估,可以将其转换为列表:
ViewBag.ZXproperties = db.ZXproperties.ToList();
这将迫使它立即被拉过电线。