通过 C# 中的反射获取“基本”数据类型,而不是奇怪的可空数据类型

2023-12-11

我的基本需求是从 LINQ to SQL 查询生成的匿名类型中获取数据类型。

我有一段代码(比我能写的更聪明,因为我还没有真正深入研究反射),它从匿名类型返回数据类型,并且非常适合 linq2sql 属性中标记为“不可为空”的元素。因此,如果我有一个字符串,它将作为 System.String 返回。但是,当元素可为空时,我最终得到它的“全名”:

{名称=“可为空1" FullName = "System.Nullable1[[System.Decimal,mscorlib,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089]]"}

在这种情况下,我想要提取的是 System.Decimal 类型(在字符串或其他情况下,我只想要 System.String)。我查看了所有属性,但找不到任何似乎可以存储此内容的内容。

    private static Dictionary<string, Type> GetFieldsForType<T>(IEnumerable<T> data)
    {
        object o = data.First();

        var properties = o.GetType().GetProperties();

        return properties.ToDictionary(property => property.Name, property => property.PropertyType);
    }

LINQ 查询(我认为这在这里并不重要):

var theData = from r in db.tblTestEdits select new { myitem = r.textField, mydecimal = r.decimalField }; 

我发现这个链接似乎试图解决类似的问题。
http://ysgitdiary.blogspot.com/2010/02/blog-post.html

尽管它似乎返回类型的“字符串”而不是实际类型,但这正是我所需要的。不知道如何转换这样的东西。

非常感谢大家。


private static Type GetCoreType(Type type)
{
    if (type.IsGenericType &&
        type.GetGenericTypeDefinition() == typeof(Nullable<>))
        return Nullable.GetUnderlyingType(type);
    else
        return type;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 C# 中的反射获取“基本”数据类型,而不是奇怪的可空数据类型 的相关文章

  • 在搜索 List 时,为什么 Enumerable.Any(Func predicate) 比带有 if 语句的 foreach 慢

    最近有件事引起了我的好奇心 Why is the Enumerable Any Func
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • IronPython:没有名为 json 的模块

    我安装了 IronPython 我的 python 文件如下所示 import sys print sys version import json 运行它的代码 var p Python CreateEngine var scope p C
  • 如何将“外部模板”与由同一类中的模板化成员使用的嵌套类一起使用?

    首先 一些背景信息 我尝试以 Herb Sutter 在他的解决方案中介绍的方式使用 Pimpl 习语 得到了 101 http herbsutter com gotw 101 这在头文件中看起来像这样 include pimpl h h
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 使用 CSharpCodeProvider 类编译 C# 7.3 的 C# 编译器版本是什么?

    我想使用 Microsoft CSharp CSharpCodeProvider 类来编译 C 7 3 代码 编译器版本在 IDictionary 中指定 在创建新的 CSharpCodeProvider 时将其作为输入 例如 Compil
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 如何在 C 预处理器中生成唯一值?

    我正在编写一堆相关的预处理器宏 其中一个生成标签 另一个宏则跳转到该标签 我以这种方式使用它们 MAKE FUNNY JUMPING LOOP MAKE LABEL MAKE LABEL 我需要某种方法来生成独特的标签 每个内部标签一个MA
  • 如何注册 OMX 核心以添加新解码器

    我指的是帖子 Android 如何将解码器集成到多媒体框架 接下来我注册了我的新解码器 Android 目前不支持 media codecs xml 上述帖子的步骤 2 需要我执行OMX核心注册 但是 由于我对这个主题非常陌生 所以我无法遵
  • 为什么我的 onclick 事件没有在 Firefox 中注册?

    我有一个列表项onclick事件 它可以在 Chrome 和 Internet Explorer 中运行 但不能在 Firefox 中运行 有什么建议么 li test test br li 这对我来说在 Firefox 中工作得很好 检查
  • PyQt 是否有相当于 Toastr 的工具?

    我正在开发我的第一个 PyQt 项目 我想想出一种方法 在用户完成任务时向他们提供成功或错误消息 过去 我用过 JavascriptToastr我很好奇 Python 应用程序是否有类似的东西 我考虑过在 PyQt 中使用 QDialog
  • ld:在带有 gcc/clang -static 标志的 OSX 10.6 上找不到 -lcrt0.o 的库

    当我尝试构建以下程序时 include
  • 使用 SWR 从内部 API 路由获取客户端数据

    我正在尝试在 Next js 应用程序中获取 API 路由中的数据 但它不起作用 这是我在 API 路径上获取数据的代码 import nc from next connect const jobHandler nc jobHandler
  • 通用接口中的协变

    我想创建一个可排序的 observableCollection 所以我开始创建一个继承 observable 的类 并使用一些方法对其进行排序 然后我希望该类将索引保留到子类中 因此我创建了一个接口 该接口公开了我可以写入的索引属性 并且我
  • Xcode 无法安装“Runner”代码:-402620392(Flutter 应用程序)

    XCode 版本 11 1 11A1027 颤振版本1 17 5 我尝试在 iPad 12 4 6 上运行我的 Flutter 应用程序 它构建时没有错误 但在安装步骤中显示消息 Unable to install Runner Domai
  • get set 对于简单变量有什么好处[重复]

    这个问题在这里已经有答案了 可能的重复 公共字段与自动属性 我认为这个问题会在某个地方得到解答 但我在通常的地方找不到它 我想知道这样做有什么好处 private int foo public int foo get return foo
  • 不同的 Spring 注解 XML 声明

    似乎有多个 XML 标签告诉 Spring 使用注释
  • HTML5 使用 src 使用原始二进制数据

    假设我正在数据库中存储一个音频文件 稍后我想在我的应用程序中使用该 BLOB 或二进制文件
  • 如何访问 pybluez 中的蓝牙低级功能?

    是否有用于较低级别 bt 功能的 pybluez 包装函数 我在文档中找不到任何内容 我需要使用与以下功能等效的功能 l2ping single ping hcitool cc hcitool rssi hcitool lq hcitool
  • 不同窗口中两个文本框之间的数据绑定

    我创建了一个程序 在选中或取消选中复选框时更改文本框中的名称 我想在不同的窗口中复制这个文本框 我认为在 xaml 中使用数据挖掘是可能的 但名称仅出现在一个窗口中 第二个窗口窗口不接收数据 我向您展示了两个窗口的代码 你能帮助我吗 谢谢
  • IE 中的上标下划线

    由于时间有限 我的发言会很简短 所以如果没有我希望的那么详细 我深表歉意 我有一些代码 print a href Some text a
  • 从类路径目录获取资源列表

    我正在寻找一种方法来从给定的类路径目录中获取所有资源名称的列表 类似于方法List
  • Bootstrap 4 popper 未定义

    我正在尝试启动下拉菜单 每当我单击按钮时 我就会得到TypeError popper is undefined 我尝试导入捆绑包而不是bootstrap import bootstrap import bootstrap dist js b
  • 本地主机上的画架 JS 安全限制

    我正在学习 EaselJS 但遇到了这个奇怪的错误 无法从画布获取图像数据 因为画布已被跨源数据污染 easeljs 0 6 0 min js 71 未捕获 发生错误 这很可能是由于使用本地或跨域图像读取画布像素数据的安全限制 问题是 我的
  • 基于 ggplot 中百分位的颜色代码点

    我有一些非常大的文件 其中包含基因组位置 位置 和相应的群体遗传统计数据 值 我已成功绘制这些值 并希望对前 5 蓝色 和 1 红色 值进行颜色编码 我想知道在 R 中是否有一种简单的方法可以做到这一点 我已经尝试编写一个定义分位数的函数
  • PostgreSQL 上的透视行

    我有一个返回整行的查询 我需要将此结果转换到一个新表中 SELECT id no stud name group no class 1 class 2 class 3 class 4 FROM tbl stud class 这将返回以下内容
  • 通过 C# 中的反射获取“基本”数据类型,而不是奇怪的可空数据类型

    我的基本需求是从 LINQ to SQL 查询生成的匿名类型中获取数据类型 我有一段代码 比我能写的更聪明 因为我还没有真正深入研究反射 它从匿名类型返回数据类型 并且非常适合 linq2sql 属性中标记为 不可为空 的元素 因此 如果我