【问题标题】:IQueryable and ISession [closed]IQueryable 和 ISession [关闭]
【发布时间】:2019-03-18 13:19:00
【问题描述】:

哪种方式更好用?

ISession session = SessionController.Factory.OpenSession();
IQueryable<myObject> myObjectdquery;

1.

myObjectquery = session.Query<myObject>();  
myObjectquery = myObjectquery.Where(x=>x....)

2.

myObjectquery = session.Query<myObject>().Where(x=>x...);

我不确定我的逻辑是否正确,但在第一种方法中,myObjectquery 首先“填充”数据,然后进行查询,在第二种方法中,跳过一个步骤,myObjectquery 仅填充必要的数据。关键是什么更快?

【问题讨论】:

  • 没有区别。在这两种情况下,您都会在 session 上调用 Query,在调用结果上调用 Where

标签: linq iqueryable isession


【解决方案1】:

1.

myObjectquery = session.Query();
我的对象查询 = myObjectquery.Where(x=>x....) 或

2.

myObjectquery = session.Query().Where(x=>x...);

它们是完全一样的东西,看看它。如果您已经知道这一点并且想选择使用哪一个,请选择 2,它更容易准备并且您的代码行数更少。

P.S:您的查询在第一个示例中“填充”了数据,但不在内存中,所以没关系。所以,是的,这是同一件事。

【讨论】:

  • "您的查询被第一个示例中的数据'填充',但不在内存中" 这是什么意思?该变量只引用了一个查询,没有数据,在内存中或其他地方。
  • 是的,我同意你的看法。这是他写的:“我不确定我的逻辑是否正确,但在第一种方法中,myObjectquery 首先“填充”数据,然后进行查询”。我只是告诉他这没有任何区别,因为实际上根本没有加载任何数据。
猜你喜欢
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
  • 2018-09-05
相关资源
最近更新 更多