gpt4 book ai didi

c# - 声明一个空的 Queryable?

转载 作者:IT王子 更新时间:2023-10-29 04:53:22 25 4
gpt4 key购买 nike

如何声明这样的变量?

            var rData = from nc in ctx.NEWSLETTER_CLIENTS
join ni in ctx.NEWSLETTER_INDICES on nc.INDEX_NUM
equals ni.INDEX_NUM
select new
{
ClientID = nc.CLIENT_ID,
Email = nc.CLIENT_EMAIL_ADDRESS,
Index = nc.INDEX_NUM,
MainClass = ni.MAIN_CLASS,
SubClass = ni.SUB_CLASS,
App1 = ni.VALUE_1,
App2 = ni.VALUE_2,
App3 = ni.VALUE_3,
App4 = ni.VALUE_4
};

// Now I need to declare on a variable named fData under the function scope,
// so I can later use it:

var fData = ...; //What do I declare here?

if(x)
fData = fData.Concat(rData.Where(u => ...));
if(y)
fData = fData.Concat(rData.Where(u => ...));
// etc

最佳答案

IQueryable<type of p> fData = null;

如果你想稍后使用查询(if 之后的 iow):

var fData = Enumerable.Empty<type of p>().AsQueryable();

更新:

现在用于匿名类型:

IQueryable<T> RestOfMethod<T>(IQueryable<T> rData)
{
var fData = Enumerable.Empty<T>().AsQueryable(); // or = rData;

if(x)
fData = fData.Concat(rData.Where(u => ...));
if(y)
fData = fData.Concat(rData.Where(u => ...));

return fData;
}

// original code location
var rData = some query;
var fData = RestOfMethod(rData);

更新 2:

正如所指出的,上面的代码实际上不起作用,因为 Where 的谓词不知道类型。您可以进一步重构它以在参数中包含谓词,例如:

IQueryable<T> RestOfMethod<T>(IQueryable<T> rData, 
Expression<Func<T,bool>> pred1,
Expression<Func<T,bool>> pred2)
{ ... }

更新 3:(可能是 hacky)

var fData = rData.Take(0); // should be cheap. 

关于c# - 声明一个空的 Queryable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10932283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com