List.Select按字符串选择属性

不知道大家有没有遇到这样的情况:List使用Lambda表达式的时候,想要选择项的某个属性列。

例如,选择编号ID:

1 var idList=list.Select(o=>o.ID).ToList();

又,想要选择名称:

1 var nameList=list.Select(o=>o.Name).ToList();

可否将其抽象呢?下面是我的方法。

 1         public List<TR> GetProperty<TS, TR>(List<TS> TSource, string propertyName)
 2         {
 3             List<TR> TResult = null;
 4             if (TSource != null && TSource.Count > 0)
 5             {
 6                 var properties = TSource[0].GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
 7                 if (properties != null)
 8                 {
 9                     System.Reflection.PropertyInfo property = properties.FirstOrDefault(o => o.Name == propertyName);
10                     if (property != null)
11                     {
12                         TResult = TSource.Select(o => (TR)property.GetValue(o, null)).ToList(); //转换可自行处理。此处为了简单起见。
13                     }
14                 }
15             }
16             return TResult;
17         }

调用时传入输入、输出类型即可。

以上是本人臆想,如有更好方式,欢迎交流。

时间: 2024-10-22 03:35:46

List.Select按字符串选择属性的相关文章

如何实现select组件的选择输入过滤作用

实现select组件的选择输入过滤作用的js代码如下: /** *其中//******之间的部分显示的是在没有选择输入过滤功能的代码上加入的功能代码 ** / /** * @description This plugin allows you to make a select box editable like a text box while keeping it's select-option features * @description no stylesheets or images

javascript中select中options的属性

Select 选择区(下拉列表)对象 由“<select>”指定. 属性length 返回 Select 对象下选项的数目. obj.length // obj.options.lengthselectedIndex 返回被选中的选项的下标.obj.selectedIndex这个下标就是在 options[] 数组中该选项的位置.如果 Select 对象允许多项选择,则返回第一个被选中的选项的下标. form 返回包含本元素的表单对象. obj.options[x].form 方法blur()

添加购物车,横向滑动选择属性

最近写的一个微信的商城系统,其他功能我都会稍后更新,这里主要更新一个横向滑动选择属性功能,注意的是,这个功能下面的第二种属性我没有随着第一种的选择变化而变化(项目比较急,没写),需要的话稍微改一下就可以, 先上效果图 就是红框里面的模块,颜色与下面的规格都是可以无限递增的,现在展示数据不多,颜色是17个,规格只有一个,颜色默认选中第二个, 下面贴代码,代码里有很多其他功能,和注释,不太涉密,都没去掉, 需要某一个块功能的话可以切一下,或者仅供参考,采用avalon渲染, <link rel=&quo

[jQueryUI] - Chosen:select下拉选择框美化插件及问题【转】

hosen 是一个支持jquery的select下拉框美化插件,它能让丑陋的.很长的select选择框变的更好看.更方便.不仅如此,它更扩展了select,增加了自动筛选的功能.它可对列表进行分组,同时也可禁用某些选择项. 先来看下插件的效果:   跟这个比起来,原来的select样式是不是弱爆了! 马上来武装我们的select吧: 1.先把js和css文件引用到网页里面去: ? 1 2 3 <link href="js/jqueryUI/chosen/chosen.css" t

获取多选下拉框(select标签设置multiple属性)的值

原文链接:https://blog.csdn.net/qq846294282/article/details/82427002   (侵删) <select multiple>不能直接获取value,需要借助该元素的options属性.如下: <select id="select" multiple> <option value="1">1111</option> <option value="2&qu

数组转字符串(属性加单引号,逗号分隔)

数组转字符串(属性加单引号,逗号分隔) 数组转字符串 PHP 应用场景:SQL写操作应用插入表字段值: 数组 $data $data = array('张三','男','20',''安徽省合肥市 '); 转换如下: #join $str = " ' " . join("','", array_values($data) ) . " ' "; #str_replace $str = " ' ".str_replace( &quo

JSP的3种方式实现radio ,checkBox,select的默认选择值

JSP的3种方式实现radio ,checkBox,select的默认选择值.以radiao 为例:第一种方式:在jsp中使用java 脚本,这个方法最直接,不过脚本太多,不容易维护<%String state = request.getParrameter("state" )%> <td width="27"><input type="radio" name="state" value=&quo

select option项选择后跳转页面

第一种方法: 跳转到当前页: location.href为跳转当前的页面 <select name="here " onchange="location.href=this.options[this.selectedIndex].value;"> <option value= "http://www.baidu.com "> 百度 </option> <option value= "http:/

Randomize select algorithm 随机选择算法

从一个序列里面选择第k大的数在没有学习算法导论之前我想最通用的想法是给这个数组排序,然后按照排序结果返回第k大的数值.如果使用排序方法来做的话时间复杂度肯定至少为O(nlgn). 问题是从序列中选择第k大的数完全没有必要来排序,可以采用分治法的思想解决这个问题.Randomize select 算法的期望时间复杂度可以达到O(n),这正是这个算法的迷人之处.具体的算法分析可以在<算法导论>这本书里查看. 贴出伪代码: RANDOMIZED-SELECT(A, p, r, i) 1 if p =