IQueryable<SomeType> cases;
如果我想在case查询中添加where子句,我有两个选项,但我不知道哪个更好。
可能是:
cases = SomeFunction(cases);
...
private IQueryable<SomeType> SomeFunction(IQueryable<SomeType> cases)
{
return cases.Where(whatever);
}
或
SomeFunction(ref cases)
...
private void SomeFunction(ref IQueryable<SomeType> cases)
{
cases = cases.Where(whatever);
}
答案 0 :(得分:1)
我会使用没有引用的版本,因为它可以让调用者保持原始查询的灵活性,而无需在调用函数之前获取其引用的副本。
您的来电者可能想要编写如下代码:
var cases = CreateQueryToFindCases();
var casesFilterdBySomthing = FilterBySomething(cases);
而不是
var cases = CreateQueryToFindCases();
var casesFilterdBySomthing = cases;
FilterBySomething(ref casesFilterdBySomthing );
他们甚至可能希望嵌套这样的函数调用,这些调用不能通过ref传递的参数轻松完成:
var casesFilterdBySomthing = FilterBySomething(CreateQueryToFindCases());
答案 1 :(得分:1)
我会说第一个更好,因为它允许“流畅”使用和链接,例如:
IQueryable<SomeType> cases = ...;
(SomeCondition ? SomeFunction(cases) : cases).Where(...).OrderBy(...) etc.