var p = typeof(T).GetProperty(comboText);
listData.Select(i => p.GetValue(i).ToString()).ToList();
大致就这样
可能还需要判断空引用之类的,看你的具体情况了
listData.Select(i => p.GetValue(i).ToString()).ToList();
大致就这样
可能还需要判断空引用之类的,看你的具体情况了
解决方案 »
- 绑定到dataGridview多出现了两列额
- 求助,这段代码的逆运算,应该有点难度~
- .net cs程序里怎末才能读到表里实时更新的数据?
- 想问个IComparable的例子
- 自定义的控件如何添加右键菜单
- 如何点击按钮动态增加一个label
- 有什么控件可以做出个文本框,上面还有很多word的那些按钮(控制文本格式)的么?
- 有什么办法能够判断打印是否成功?
- 请教c#多语言问题
- c# 如何使多个窗口互相调用(我是刚接触c#的新人)
- Form中panel内用户控件1带参数传到用户控件2,panel中用户控件1释放并显示用户控件2
- c#查询分页,手头有一个Sqlserver的方法,谁帮我写一个Oracle版的呗,谢谢~~!
你可以将T类型定义为继承一个接口 比如 interface IcomboText { string comboText;}}
这样就可以 listData.Select (i=> ((IcomboText)i).comboText);代码稳定性和效率和反射比不是一个量级的
{
string s = item.comboText.ToString();
}
foreach (T temp in list)
public class Finder
{
// 定义一个泛型方法,用来查找指定值在数组中的索引
public static int Find<T>(T[] items, T item)
{
for (int i = 0; i < items.Length; i++)//遍历泛型数组
{
if (items[i].Equals(item))//判断是否找到了指定值
{
return i;//返回指定值在数组中的索引
}
}
return -1;//如果没有找到,返回-1
}
}
就是遍历T.GetType().GetProperties()数组,有一个name还是什么的属性可以获取属性的引用名,然后循环和comboText的字段值对比,符合要求的就取出来....最好加上break,因为本来就已经很影响效率了...不知道有没有更好的做法,因为这样对比需要循环,集合又需要循环,而里面又是反射...