在条件作用域内声明隐式类型变量并在外部使用它

2023-11-27

在下面的简化代码中,

if(city == "New York City")
{
  var MyObject = from x in MyEFTable
                     where x.CostOfLiving == "VERY HIGH"
                     select x.*;

}
else
{
  var MyObject = from x in MyEFTable
                     where x.CostOfLiving == "MODERATE"
                     select x.*;

}

  foreach (var item in MyObject)
  {
     Console.WriteLine("<item's details>");
  }

变量 MyObject 在条件块之外不可访问。如何在 if..else 之外进行迭代?


让我们澄清一下您令人困惑的问题。问题是你有两个局部变量,每个变量都有相同的“不可描述”类型——匿名类型序列。

我会像这样更改您的具体代码:

string cost = city == "NYC" ? "HIGH" : "MODERATE";
var query = from row in table 
            where row.Cost == cost 
            select new { row.Population, row.Elevation };

但是,如果由于某种原因您仍然需要保持代码的结构,您可以这样做:

static IEnumerable<T> SequenceByExample<T>(T t){ return null; }
...
var query = SequenceByExample(new { Population = 0, Elevation = 0.0 } );
if (whatever)
    query = ...
else
    query = ...

这是一种名为“cast by example”的技巧的变体,其中您将匿名类型的示例提供给泛型方法。然后,方法类型推断会找出返回类型,并将其用作隐式类型局部变量的类型。在运行时,它什么也不做,只是创建一个无用的对象,然后很快被丢弃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在条件作用域内声明隐式类型变量并在外部使用它 的相关文章

随机推荐

  • 从基类指针访问子类成员 C++

    我有一系列自定义类 Student 对象 CourseStudent和ResearchStudent都继承自Student 并且Student的所有实例都是其中之一 我有一个函数来遍历数组 确定每个学生的子类型 然后对它们调用特定于子类型的
  • 将 adb 与具有相同序列号的多个设备一起使用[重复]

    这个问题在这里已经有答案了 我的电脑连接了两个设备 但是当我启动adb时 它们的序列号都是 0123456789ABCDEF When I try to install an APK the installation fails with
  • Haskell:使用 $ 的函数应用

    在下面的代码片段中 您可以看到我用 Haskell 编写的两个 collat z 函数 对于递归应用程序 我在第一个示例 collat z 中使用括号来获得正确的优先级 由于我刚刚学习了 的函数应用 我尝试使用那个东西重写函数 collat
  • 如何在 python 中创建一个加密安全的随机数?

    我正在用 python 制作一个项目 我想创建一个加密安全的随机数 我该怎么做 我在网上读到 常规随机发生器生成的数字在加密上并不安全 并且该函数os urandom n 返回给我一个字符串 而不是数字 由于您想要生成某个特定范围内的整数
  • cURL 非常慢

    有谁知道为什么 php5 下的 cURL 会如此缓慢地失败 即使在 45 秒超时时 在 speedO light 服务器上下载几 kb 文件 代码按要求放在此处 尽管我进一步提高了超时 以使脚本在执行期间不会失败 并将 useragent
  • 获取 git stash 父提交

    有没有办法检索最初创建存储的提交 使用默认命令创建存储时git stash原始提交保存在隐藏消息中 因此通常如下所示 stash 0 WIP on master abc123 This is the message of some comm
  • Java有立即调用的匿名函数吗? [复制]

    这个问题在这里已经有答案了 例如 我可能想做这样的作业 在 JavaScript 中 var x function do some searching calculating return 12345 在 Java 中 我如何使用 Lamb
  • 旋转 UIAlertView

    我创建了一个自定义 UIAlertView 通过子类化它并弄乱它的show函数 它有一些自定义子视图并且具有非标准尺寸 当我创建并显示它时 它工作正常 但是 当旋转设备时 警报会旋转 然后返回到其默认大小 任何想法要覆盖什么功能 或者我应该
  • 不带参数的类方法会产生 TypeError

    这段代码 class testclass def init self x y self x x self y y self test def test print test if name main x testclass 2 3 yiel
  • 为什么 JavaScript 中是 2 == [2]?

    我最近发现2 2 在 JavaScript 中 事实证明 这个怪癖会带来一些有趣的后果 var a 0 1 2 3 a 2 a 2 this is true 同样 以下工作 var a abc 1 a abc a abc this is a
  • 在 NumPy 中更改数组边缘的值

    我将仅使用 NumPy 工具创建一个数组 就在那里 2 2 2 2 2 2 1 1 1 2 2 1 1 1 2 2 1 1 1 2 2 2 2 2 2 这是我的代码 import numpy as np x np ones 5 5 dtyp
  • 德尔福ADO查询

    有没有比 ADO 数据集更快的迭代方法 while not ADOQuery1 Eof do begin Do something ADOQuery1 Next end 我需要扫描大约 9000 个项目的数据集 并且仅提取与一组预定义的分支
  • 在运行时从扩展坞添加/删除应用程序图标?

    是否有公共 Apple API 允许您在运行时删除应用程序的停靠栏图标 我尝试通过 NSApplication 的 dockTile 替换大小为零的空视图 但这只是擦除了停靠图标 而没有回收其空间和启动指示器 我还了解应用程序 info p
  • 在node.js中设置环境变量然后在终端中使用它?

    好吧 我想在使用 node js 执行 js 文件期间添加环境变量 就像是 process env VARIABLE 值 我使用终端使用模块运行 js 文件 我可以设置变量 然后在 js 文件执行期间使用它 但我想使用 process en
  • 在 R 中创建两个向量的所有可能排列[重复]

    这个问题在这里已经有答案了 我有两个这样的向量 f1 c a b c d e1 c e f g 它们有 4 3 种不同的排列 我需要在 R 软件中创建它们的所有可能排列 例如 1 a e a f a g 2 a e a f b g 而且我的
  • 使用 JavaScript 将字节数组显示为图像

    我正在尝试使用纯 JavaScript 显示图像 字节数组 我怎样才能在 ASP NET 中实现这一目标 如果您有字节数组 请首先将其转换为Base64String然后你把它放在img像这样的标签 对于 PNG 图像 img src dat
  • php - 将“%C3%BC”翻译为 ü

    在一个页面中 我有这个参考 a href Schulte Einf C3 BChrung pdf Page a 我编写了一个函数来查看引用的文件是否存在 但在本例中 该文件名为 Schulte Einf hrung pdf 我知道C3 BC
  • 如何在pyspark中使用log4j配置特定记录器的日志级别?

    From thisStackOverflow 线程 我知道如何在 pyspark 中获取和使用 log4j 记录器 如下所示 from pyspark import SparkContext sc SparkContext log4jLog
  • 防止位图太大而无法上传到纹理android

    我需要以图库形式全屏显示原始图像 对于拇指来说 它将完美地工作 当我尝试使用原始源全屏显示该图像时 它将无法显示 大多数情况下 如果图像分辨率大于2000 则会显示错误位图太大 无法上传到纹理 android 我想阻止这种情况 我搜索谷歌但
  • 在条件作用域内声明隐式类型变量并在外部使用它

    在下面的简化代码中 if city New York City var MyObject from x in MyEFTable where x CostOfLiving VERY HIGH select x else var MyObje