是否可以查询ExpandoObject列表?

2024-03-29

我想知道是否可以使用常规 LINQ 查询 ExpandoObject?原因是我有动态 ExpandoObject,但我需要进行一些查询才能进一步传递。

它有一些始终保留的属性,例如Id, Notes还有一些我无法控制的动态属性。

这是我的列表的样子

[
  {
    "Id": 1,
    "FileId": 1,
    "Notes": "",
    "1": "12.02.1991"
  },
  {
    "Id": 2,
    "FileId": 2,
    "Notes": "",
    "1": "12.02.1991"
  }
]

Code

正如您所看到的,我有静态项目,然后我确保每个项目动态键都成为该项目属性。在这个例子中1是关键并且12.02.1991是值

var generatedItems = new List<object>();

foreach (var item in items)
{
    var modifiedItem = new List<KeyValuePair<string, object>>
    {
        new KeyValuePair<string, object>("Id", item.Id),
        new KeyValuePair<string, object>("FileId", item.FileId),
        new KeyValuePair<string, object>("Notes", item.Notes)
    };
    modifiedItem.AddRange(item.Fields.Select(field => new KeyValuePair<string, object>(field.Key, field.Value)));

    generatedItems.Add(ConvertToExpandoObjects(modifiedItem)); // Here I construct object from key/value pairs
}

return generatedItems; // Is it possible to query this thing?

我认为这不相关,但这是我的转换为扩展对象功能。

public static dynamic ConvertToExpandoObjects(IEnumerable<KeyValuePair<string, object>> pairs)
{
    IDictionary<string, object> result = new ExpandoObject();
    foreach (var pair in pairs)
        result.Add(pair.Key, pair.Value);
    return result;
}

我尝试简单地做类似的事情generatedItems.Where(x => x.);但显然它没有给我任何帮助,因为它不知道这些对象有Id etc..

那么是否可以查询它,如果可以,那么如何查询呢?


您的建议是正确的,您将能够使用点表示法查询动态对象的集合。

var ids = generatedItems.Cast<dynamic>().Select(x => x.Id);

但是,请记住,这里没有类型安全,并且正如您所说,IntelliSense 没有用,因为您使用的是动态对象。

如果您的代码取决于这些对象之一是否具有可选属性(例如,有些对象具有“标题”,其他对象则没有),那么它将需要更多的体力劳动。

if((generatedItems as IDictionary<String, object>).ContainsKey("Title")) {

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

是否可以查询ExpandoObject列表? 的相关文章

  • 在 C/C++ 中获得正模数的最快方法

    通常在我的内部循环中 我需要以 环绕 方式索引数组 因此 例如 如果数组大小为 100 并且我的代码要求元素 2 则应该给它元素 98 高级语言 例如 Python 可以简单地使用my array index array size 但由于某
  • 在实体框架拦截器中向 DbScanExpression 添加内部联接

    我正在尝试使用实体框架 CommandTree 拦截器通过 DbContext 向每个查询添加过滤器 为了简单起见 我有两个表 一个称为 User 有两列 UserId 和 EmailAddress 另一个称为 TenantUser 有两列
  • 如何保证对象只有一个线程

    我有以下代码 class Service public void start creates thread which creates window and goes to message loop void stop sends WM C
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • 在 JSQMessagesViewController 中显示 LocationMediaItem

    我刚刚尝试实施LocationMediaItem in my Xamarin iOS应用程序使用JSQMessagesViewController 一切都很顺利 唯一的问题是UICollectionView应该显示位置的单元格永远停留在加载
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 运行选定的代码生成器时出错:“未将对象引用设置到对象的实例。”错误?

    我已经尝试了所有解决方案 例如修复 VS 2013 但没有用 当您通过右键单击控制器文件夹来创建控制器并添加控制器时 然后右键单击新创建的控制器的操作并选择添加视图 当我尝试创建视图时 就会发生这种情况 它不是一个新项目 而是一个现有项目
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • 您是否将信息添加到每个 .hpp/.cpp 文件的顶部? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 创建新的 C 头文件 源文件时 您会在顶部添加哪些信息 例如 您是否添加日期 您的姓名 文件描述等 您是否使用结构化格式来存储此信息 e g F
  • 如何使用 FLinq 在 F# 中进行外连接?

    问题几乎说明了一切 我有一个如下形式的大 flinq 查询 for alias1 in table1 do for alias2 in table2 do if alias1 Id alias2 foreignId 使用这种形式 如何在这两
  • 如何在 DropDownList 中保留空格 - ASP.net MVC Razor 视图

    我在视图中通过以下方式绑定我的模型 问题是我的项目文本是格式化文本 单词之间有空格 如下所示 123 First 234 00 123 AnotherItem 234 00 123 Second 234 00 我想保留此项目文本中的空格 即
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959

随机推荐

  • Alamofire 具有用于快速应用程序的自定义参数编码

    我必须在我的 swift 应用程序中从 SOAP Web 服务调用一些方法 所以我认为我应该使用自定义参数编码 但是当我为此编码创建闭包时 它似乎永远不会被调用 难道我做错了什么 这是我的代码 let custom URLRequestCo
  • Spring 4,JPA,关闭控制台调试消息

    我有一个基本的 Spring 4 JPA 应用程序 我使用所有 Java 配置 根本没有 XML 我想关闭控制台调试消息 我看到了很多关于此的问题并尝试了解决方案 但我仍然看到了所有消息 控制台消息如下所示 14 58 29 301 mai
  • 从函数返回数据 (Swift)

    我正在尝试返回结果并能够从此函数访问结果数组 函数中的一切都正常工作 但是我无法返回任何内容或访问结果或从闭包外部在函数内部创建的任何变量 我想从闭包外部访问 result valueForKey id 我怎样才能做到这一点 class V
  • 错误(Xcode):意外的重复任务:目标“Runner”已将命令从“path/GoogleService-Info.plist”复制到“path/GoogleService-Info.plist”

    我尝试在正确使用 firebase 进行设置后在 iOS 上运行 flutter 项目 但收到以下与 GoogleService Info plist 相关的重复错误 这是完整的错误输出 Error output from Xcode bu
  • Angular 订阅将对象推送到数组

    我正在制作角度应用程序 并且我有一个空数组 例如 users any 然后我拨打服务电话ngOnInit将数据存储到users像数组一样 ngOnInit Getting the data from json this httpClient
  • 将 SSRS 从 2016 年降级至 2008 年

    我们有 2 个工作环境 一个用于 SSRS 2016 另一个用于 2008 我错误地在 VS2016 中打开了一份 2008 年的报告 现在我无法打开2008年的它 如何将 2016 年打开的 SSRS 报告降级回 2008 年 我设法做到
  • 在 C++ API 中将一个张量的一大块复制到另一个张量中

    我需要复制一行一个张量 在c API 转换为另一个张量的某些部分 其中开始和结束索引可用 在 C 中我们可以使用类似的东西 int myints 10 20 30 40 50 60 70 std vector
  • 自定义 Perforce RCS 关键字扩展的输出

    我想使用 RCS 关键字扩展来过滤文件 以便 Change 被翻译成1745而不是默认行为 Change 1745 我意识到这会阻止未来的扩展 但就目的而言这是可以接受的 也欢迎使用其他将更改列表编号插入文件的方法 这是我在 Perforc
  • 列表视图多重选择

    有没有办法强制列表视图控件将所有点击视为通过 Control 键完成的 我需要复制使用控制键的功能 选择项目集并取消设置其选择状态 以便允许用户轻松地同时选择多个项目 先感谢您 即使 MultiSelect 设置为 true 这也不是 Li
  • 逐字迭代字符串

    我想知道如何逐字迭代字符串 string this is a string for word in string print word 上面给出了一个输出 t h i s i s a s t r i n g 但我正在寻找以下输出 this
  • 反射值接口和指针接收器

    在golang的mongodb驱动中有以下代码 case reflect Struct if z ok v Interface Zeroer ok return z IsZero return false Zeroer 接口定义如下 typ
  • 比较 (int)double 和 (int)int 时出现异常

    嘿 我正在使用 pdCurses lib 和 stringStream 来计算并制作一个代表时钟的 5 个字符长的字符串 它显示为 00 00 0 00 00 00 或 0 000 但是 当运行我的函数时 我在这部分抛出一个异常 if in
  • 如何在Python中验证字典的结构(或模式)?

    我有一本包含配置信息的字典 my conf version 1 info conf one 2 5 conf two foo conf three False optional conf bar 我想检查字典是否遵循我需要的结构 我正在寻找
  • 有没有办法给某人打电话并在android中播放音频文件?

    我想创建一个紧急呼叫应用程序 如果触发 它会呼叫给定号码并播放音频文件 提供呼叫者无法提供的信息 为此 我需要拨打电话 但确保我可以用播放的音频文件替换扬声器中的任何声音 我可以在安卓中做到这一点吗 有什么办法呢 目前您无法使用 G1 执行
  • 自定义“AuthenticationStateProvider”身份验证失败

    我创建了一个自定义ApiAuthenticationStateProvider返回后AuthenticationState仍在说明 info Microsoft AspNetCore Authorization DefaultAuthori
  • Genymotion 中运行的虚拟设备会定期在 ADB 中离线

    我有一个在 Genymotion 2 4 中运行的 Android 设备 如果重要的话 带有 Lollipop 图像 并通过 ADB 版本 1 0 32 从本地网络中使用 Eclipse 的另一台开发人员 PC 连接到它 没有连接问题 一切
  • 如何使用 swift 3 通过 firebase 推送通知发送图像

    任何人都可以帮我发送这样的通知 我正在使用 Firebase 通知 当我发送通知时 我尝试将图像 URL 放入高级选项和键 1 的值中 图像 URL 显示在调试器中 但当我的设备中出现通知时 没有显示图像 这是我的代码 import UIK
  • 使用 Moq 进行 FormsAuthentication.SetAuthCookie 模拟

    您好 我正在对 ASP Net MVC2 项目进行一些单元测试 我正在使用起订量框架 在我的 LogOnController 中 HttpPost public ActionResult LogOn LogOnModel model str
  • SBT 未解决 Squeryl 依赖关系

    我最近开始了一个新项目 Play 框架和Scala 我习惯于使用 Squeryl 进行 ORM 但由于某种原因 这次它无法解决我的依赖关系 尽管它会解决其他问题 只是不能解决 squeryl 问题 我所做的唯一不同的是 我使用的计算机与以前
  • 是否可以查询ExpandoObject列表?

    我想知道是否可以使用常规 LINQ 查询 ExpandoObject 原因是我有动态 ExpandoObject 但我需要进行一些查询才能进一步传递 它有一些始终保留的属性 例如Id Notes还有一些我无法控制的动态属性 这是我的列表的样