如何使用 C# 在 .Net 中的类型化对象列表中选择对象属性的所有值

2023-12-12

呃,我该如何解释这个……可能是一个简单的问题,但我的头脑很混乱。

假设我有这样的课程:

public class NestedObject
{
    public string NestedName { get; set; }
    public int NestedIntValue { get; set; }
    public decimal NestedDecimalValue { get; set; }
}

public class SomeBigExternalDTO
{
    public int Id { get; set; }
    public int UserId { get; set; }
    public int SomeIntValue { get; set; }
    public long SomeLongValue { get; set; }
    public decimal SomeDecimalValue { get; set; }
    public string SomeStringValue { get; set; }
    public NestedObject SomeNestedObject { get; set; }
    // ... thousands more of these properties... inherited code
}

我想要填充的类在这里:

public class MyResult
{
    public int UserId { get; set; }  // user id from above object
    public string ResultValue { get; set; }  // one of the value fields from above with .ToString() executed on it
}

我想做的是创建一个助手来返回该对象列表中所有实例的属性值(我猜横截面是我描述它的最佳方式):

var foo = new List<SomeBigExternalDTO>();
foo = GetMyListOfSomeBigExternalDTO();

public static List<MyResult> AwesomeHelper(List<SomeBigExternalDTO> input, SearchableProperty thePropertyIWant)
{
    // some magic needs to happen here...
}

这里棘手的部分是我想根据链接选择器动态传递属性(我不知道如何做到这一点):

var output = AwesomeHelper(GetMyListOfSomeBigExternalDTO(), x => x.SomeIntValue);
var output2 = AwesomeHelper(GetMyListOfSomeBigExternalDTO(), x => x.SomeNestedObject.NestedIntValue); 

这应该返回一个 MyResult 对象列表,其中 UserId 和 SomeIntValue.ToString() 对应于输入列表中的每个项目。

哇,我真的希望这是有道理的。如果不清楚,请告诉我,我将提供更多详细信息。我真的希望这是我忽略的图书馆中的一些东西。

关于我能完成这个任务有什么想法吗?


You could将其作为扩展方法实现:

public static IEnumerable<MyResult> AwesomeHelper(this IEnumerable<SomeBigExternalDTO> input, 
                                                  Func<SomeBigExternalDTO, int> intMapper)
{
    foreach (var item in input)
        yield return new MyResult() 
        {
            UserId = item.UserId, 
            ResultValue = intMapper(item) 
        };
}

现在你可以像这样使用它:

var output = GetMyListOfSomeBigExternalDTO().AwesomeHelper( x => x.SomeIntValue);
var output2 = GetMyListOfSomeBigExternalDTO().AwesomeHelper( x => x.SomeNestedObject.NestedIntValue); 

话虽如此 - 不要这样做 - 不知怎的,看起来你正在重新发明 Linq 已经为你提供的东西,您可以仅使用 Linq 执行相同的操作:

var output = GetMyListOfSomeBigExternalDTO().Select( x=> new MyResult()
             {
                UserId = item.UserId, 
                ResultValue = x.SomeIntValue
             });

var output2 = GetMyListOfSomeBigExternalDTO().Select( x=> new MyResult()
             {
                UserId = item.UserId, 
                ResultValue = x.SomeNestedObject.NestedIntValue
             });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 C# 在 .Net 中的类型化对象列表中选择对象属性的所有值 的相关文章

  • 实体框架 - 将枚举的 ICollection 保存在数据库中

    我有一个具有 type 属性的类ICollection
  • IE7 中的多个选项卡和一个工具栏实例

    我用 C 开发了一个用于 Internet Explorer 的工具栏 用于从外部应用程序发送和接收 URL 它在 IE6 中运行得很好 但我想在新版本 IE7 中利用选项卡式浏览 但我在那里遇到了障碍 似乎在 IE7 中 每个选项卡都有一
  • 如何获取picturebox非公开成员的值?

    我需要从 picturebox 的非公共成员获取图像矩形的值 如何获得该值 提前致谢 这是使用反射获取值的方法 PropertyInfo pInfo pictureBox1 GetType GetProperty ImageRectangl
  • 使用自定义源增强 Iostreams zlib_error

    我正在尝试使用zlib decompressor通过一个解压缩数据istreambuf iterator 我找不到使用输入迭代器作为流的输入的内置方法 如果已经存在 请指出一种方法 所以我写了这个源代码 template
  • 为什么我们不能将新字符串分配给 char 数组,而是分配给指针?

    我试图将字符串重新分配给预初始化的数组 a 但我得到的只是一个错误 main char a Sunstroke char b Coldwave a Coldwave b Sunstroke printf n s s a b 错误 从类型 c
  • 从 ASP.NET 插入到 MS Access

    我们正在尝试建立一个专门用于内联网的服务台票务系统 决定使用 Visual Studio 2008 Express 的 ASP NET C 如果需要的话 我们有一个完整版本 没什么花哨的 几页抓取 NTLM 信息 系统信息并将其与问题一起存
  • 字符集中字符的顺序

    是否通过标准保证字符的顺序 例如 我可以算出字符集表中 1 符号后面跟着 2 符号吗 或者它是特定于平台的 1999 年的 C 标准对字符集是这样规定的 基本源字符集和基本执行字符集都应具有以下成员 拉丁字母表中的 26 个大写字母 拉丁字
  • 执行 Mongo 查询 db.collection.runCommand("text",{"search":"search text"})

    我需要在我的网站中添加全文搜索选项 在 mongodb 中添加数据库 蒙戈查询 db collection runCommand text search search text 给出了结果 但是如何使用C 执行它 collection In
  • 可变参数模板中的可变参数模板推导

    我不确定标题是否有意义 但这个例子实际上非常简单 A converter struct with a generic constructor template
  • Boost的Dijkstra算法教程

    我很难弄清楚如何使用 Boost 的 Dijkstra 算法 我已经阅读了他们的示例和文档 但我仍然无法理解如何使用它 Boost的文档 http www boost org doc libs 1 50 0 libs graph doc d
  • C 中的 const 和指针

    将 const 与指针一起使用可能会导致指针对象无法通过使用相关指针取消引用来修改 但为什么我也不能修改指针不直接指向的内容呢 例如 int a 3 const int ptr a ptr 5 不会编译 但为什么 ptr 2 5 还编译不了
  • 动态方法的实际例子?

    我想学习动态方法及其使用 C 的实际示例 动态方法和Reflection有什么关系吗 请帮我 我们正在使用动态方法来加速反射 这是我们的反射优化器的代码 只比直接调用慢10 比反射调用快2000倍 public class Reflecti
  • C# CsvHelper.ValidationException - 为什么?

    我正在尝试在 C 控制台应用程序中使用 CSVHelper 我有一个例外 CsvHelper ValidationException 标头匹配 Numer Dokumentu 未找到索引 0 处的名称 我不知道为什么 因为这个标题位于 cs
  • 当我更新具有相同数据类型的另一个列表时列表发生更改

    我的代码看起来像这样 public class Category public string CatId get set public string CatName get set public string SpecId get set
  • 为什么函数不能跟在 Main 之后

    为什么我不能在 main 之后放置一个函数 Visual Studio 无法构建程序 这是 C 怪癖还是 Visual Studio 怪癖 eg int main myFunction myFunction 会产生 main 无法使用 my
  • 无法从 GetSystemTime() 获取毫秒

    我正在尝试打印秒和毫秒分辨率计时 我正在使用GetSystemTime 这是我的代码 GetSystemTime datetime RETAILMSG 1 T Time After Data Sent to USB d d r n date
  • 如何在网络浏览器中打开 Excel?

    单击按钮时我需要在网络浏览器中打开 Excel 如何在 asp net 中执行此操作 您无法在客户端 浏览器 计算机上控制和启动软件 为什么 安全 如果这是可能的话 黑客早就接管了所有计算机 你能解释一下吗exactly你想做什么 如果您解
  • 生成一定范围内的 N 个随机数,其总和为常数

    我想生成从 a b 之间的特定分布 例如均匀随机 抽取的 N 个随机数 其总和为常数 C 我尝试了一些我自己能想到的解决方案 以及在类似线程上提出的一些解决方案 但是他们中的大多数要么适用于有限形式的问题 要么我无法证明结果仍然遵循所需的分
  • C# 中线程之间发送消息

    如何在线程之间发送和接收消息 例如 一种解决方案是共享并发队列 尽管它的名称 并发队列 http msdn microsoft com en us library dd267265 aspx 这将允许您将一个对象从一个线程入队 并让另一个线
  • 使用 解释 gprof 输出

    我试图在我的程序中找到性能问题 从而通过分析来检测代码 gprof 创建一个如下所示的平面配置文件 Flat profile Each sample counts as 0 01 seconds cumulative self self t

随机推荐

  • JTabel 单个单元格文本对齐

    基本上我有一个JTable 和这个JTabel将在一个单元格中包含一种产品 然后在其正下方的单元格中包含成本 产品名称应左对齐 产品成本应向右对齐 我实际上并不关心每行中其他单元格的对齐方式 所以我需要设置单个单元格或单个行的对齐方式 我找
  • Python中无效证书获取证书信息

    我正在编写一个 Python 2 7 13 Win x64 脚本来验证 SSL 证书并发出问题警报 但是 我遇到了一个问题 即仅当证书有效时脚本才会返回信息 如果证书无效 我会收到 CERTIFICATE VERIFY FAILED SSL
  • 替换文本中的一个字符

    如何用 2B 替换 这是我的代码 x lt asflj ldjjsf ljsdlafj gsub 2B x 我的输出是 2Ba 2Bs 2Bf 2Bl 2Bj 2B 2B 2B 2Bl 2Bd 2Bj 2Bj 2Bs 2Bf 2B 2Bl
  • “libRestKit.a,文件是为存档而构建的,不是正在链接的架构(armv7)”

    我正在尝试使用 xcodebuild 来构建项目 但是RestKit and GPUImage给出以下问题 ld 警告 忽略文件 project libGPUImage a 文件 project libGPUImage a 2个切片 中缺少
  • 应用程序服务器如何将 Google 帐户与用户设备关联?

    我希望用户能够从网络服务器和 或本机 PC 应用程序输入数据 并将其传输到他们选择的 Android 设备 就像 Google Play 在设备上安装的方式一样 我想使用用户的 Google 帐户验证在应用程序服务器和向 GCM 注册的用户
  • 在地图上绘制线条 - gcIntermediate

    我的代码可以很好地生成从 A 点到 B 点的地图和线条 但是对于远东半球的国家 该线尝试穿过最短路径 例如从澳大利亚向东 并中断以创建一条穿过地块的直线 有什么建议么 我缩短了代码并将其全部包含在下面以供使用 有人提到 在代码的链接中 使用
  • 配置django与Oracle 11g数据库问题

    使用 Django 进行 Oracle 数据库配置 并在迁移应用程序时遇到错误 django db migrations exceptions MigrationSchemaMissing 无法 创建 dja ngo migrations
  • 使用进程将数据发送到记事本

    我想将列表框中的每个项目发送到记事本 但我的逻辑有点打败我 private void send Click object sender EventArgs e var notepad Process GetProcessesByName N
  • 为什么 random.shuffle 返回 None ?

    Why is random shuffle返回None在Python中 gt gt gt x foo bar black sheep gt gt gt from random import shuffle gt gt gt print sh
  • 可以用SQL在数据库中进行二分查找吗?

    好的 我正在使用 C 编程语言访问一个简单的数据库 在 Microsoft SQL Server 上 目前 我正在使用 DataReader 对象来访问数据库 所以这是我的问题 是否可以对特定的数据进行二分搜索 在 C 中 以便我可以加快搜
  • Symfony2 - 如何从我的网址中删除“web/app_dev.php/”?

    当我希望我的 symfony 网站上线时 如何从我的网址中删除 web app dev php 这是开发时的默认url http localhost my symfony 2 web app dev php hello World 所以当我
  • NSMutableArray indexOfObject 返回一个非常大的数字

    我有一个 NSMutableArray 返回一个非常大的索引 po masterArray count lt returns 2 NSUInteger theIndex masterArray indexOfObject validateE
  • 在编译时选择随机数分布

    我正在使用编写测试TYPED TEST谷歌测试的功能 它允许我将测试推广到多种类型 我正在测试类型的类模板int and double 在测试中 我需要生成随机数 为此 我尝试使用std uniform int distribution
  • 数据描述符和非数据描述符的正确定义是哪一个?

    它们都是来自文档的Python 第一个 says 如果一个对象定义了两者 get and set 它被认为是一个数据描述符 仅定义的描述符 get 称为非数据描述符 它们通常用于方法 但也可能有其他用途 第二个 says 如果描述符定义 s
  • @aspnet_Membership_CreateUser 的密码

    应用 书呆子晚餐 该 SP 用于为新创建的用户插入密码 我试图找出应用程序代码中 Password 的来源 因为它是提供给该 SP 的 我在应用程序级别上查找它 但在应用程序级别上找不到它 有谁知道应用程序中哪里使用SP来传递 Passwo
  • WaitForSingleObject 不等待进程结束[重复]

    这个问题在这里已经有答案了 我想等待进程执行 calc exe 结束 但它不起作用 我的程序很快完成 而我的进程 calc exe 继续运行 我没有停止它 并且 WaitForSingleObject 立即返回 WAIT OBJECT 0
  • 比较Excel中的两列,插入空白行移动关联数据

    我在Excel中有大量数据需要按列进行匹配 具体来说 目前的数据如下 Column 1 Column 2 Column 3 1 1 aaaa 2 3 bbbb 3 4 cccc 4 理想情况下 我希望数据看起来像 Column 1 Colu
  • 如何在 Xamarin.Forms 中登录 Facebook

    我想制作一个 Xamarin Forms 项目 针对 iOS Android 和 Windows Phone 我的应用程序需要使用 Facebook 对用户进行身份验证 我应该独立实现每个平台的登录 还是使用手动流程 https devel
  • 在文本文件中打印 strace 命令的输出

    我需要将以下命令的结果写入文本文件 但该命令不起作用并且在使用时cat output txt什么也不给我看 请帮我解决这个问题吗 strace r y e read Program l o output txt thanks 为了将来的参考
  • 如何使用 C# 在 .Net 中的类型化对象列表中选择对象属性的所有值

    呃 我该如何解释这个 可能是一个简单的问题 但我的头脑很混乱 假设我有这样的课程 public class NestedObject public string NestedName get set public int NestedInt