在LINQ查询中设置值

时间:2011-11-28 11:32:45

标签: linq entity-framework linq-to-sql linq-to-entities

我有一个项目,我需要从一个实体加载结果 选择结果,而不是用这些结果加载另外2个实体并从中选择数据,稍后将返回。

是否可以从3个存储库构建LINQ查询 ? 请给我一些代码示例或指向我链接...我找不到如何

这只是一个我想问的可能的涂鸦:

  ARepository rep = new AReository();
    BRepository rep = new BReository();
      var Q1= rep.GetAllView1()
                      .Select(o=>new {
                        X=o.data.aaa,
                        Y=o.data.bbb,
    ....
      var Q2= rep.GetAllView2()
                        .Where(x => x.bata.ss == X

      var Q3= rep.GetAllView3()
                        .Where(x => x.cata.ff== Y

1 个答案:

答案 0 :(得分:1)

我认为你需要使用导航属性以任何方式有效。您展示的内容是可能的,但是当您不需要它们时,您很可能最终得到所有实体。从您的示例看,您有三个实体:

视图1

  • AAA
  • BBB

视图2

  • ss - >与View1.aaa的外键关系

VIEW3

  • ff - >与View1.bbb的外键关系

最简单的方法是在数据库中定义这些键,但您可以在实体框架设计器中定义它们。一旦你建立了关系模型,它就会让事情变得非常简单......

因此,View1权利可能如下所示:

public class View1
{
    public ICollection<View2> View2s { get; set; }

    public ICollection<View3> View3s { get; set; }
}

一旦有了这样的实体,下面的代码就可以了:

rep
    .GetAllView1()
    .Where(o => o.View2s != null && 
           o.View2s.Count() > 0 && 
           o.View3s != null && 
           o.View3s.Count() > 0)

到目前为止,您有一组View1对象,它们都具有2个属性及其关联的View2和View3实体。