EF4.1 LINQ,选择所有结果

时间:2011-11-06 19:03:48

标签: linq entity-framework-4.1

我是LINQ查询和EF的新手,我通常使用MySQL,我无法猜测如何编写非常简单的查询。

我想从表格中选择所有结果。所以,我这样使用:

ZXContainer db = new ZXContainer();
ViewBag.ZXproperties = db.ZXproperties.All();

但我发现我必须在All(---)中写一些东西。

有人可以指导我怎么做?如果有人也有任何好的参考链接,我非常感谢。

5 个答案:

答案 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();

这将迫使它立即被拉过电线。