gpt4 book ai didi

c# - 如何为生成一系列匿名类型的 linq 查询声明全局变量

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:39 30 4
gpt4 key购买 nike

我有一个生成一系列匿名类型的 linq 查询。查询定义为:

var query = from a in Db.Table1
join b from Db.Table2
join...
...
select new {
a.field1, a.field2,
b.field1, NewName = b.field2 };

现在我想在以下场景中使用这个查询:

if (x == 1)
{ query = ...
...rest of code_1 }
if (x == 2)
{ query = ...
...rest of code_2 }

第一个“if”中的“Query”将使用与第二个“if”中的查询不同的表、连接和 where 语句,但是两者将具有完全相同的“select new”语句。

为此,我需要声明一个在“if”语句中可见的变量“query”。

当我使用以下方法检查“查询”的“类型”时:

query.GetType().ToString();

它给了我:

query type = 'System.Data.Objects.ObjectQuery`1[<>f__AnonymousType7`14[System.Int32,System.String,System.String,System.String,System.Nullable`1[System.DateTime],System.Decimal,System.Nullable`1[System.DateTime],System.Decimal,System.String,System.String,System.String,System.String,System.String,System.String]]'

我不能声明一个单独的类,因为我只能在我正在编写代码的方法中编写。我应该如何声明“查询”变量?

最佳答案

我看到的唯一方法是使用这样的示例来定义它:

var query = Enumerable.Repeat(new
{
field1 = default(int),
field2 = default(string),
field3 = default(string),
// other fields ...
}, 0).AsQueryable();

其中 field1field2 等应该是您的具体属性名称及其实际类型,按照内部选择中使用的确切顺序。

关于c# - 如何为生成一系列匿名类型的 linq 查询声明全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38816024/

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