比如有个Person类,有name、sex等属性,除了For Each还有什么方向查找符合某项属性的记录?
解决方案 »
- 【源码分享】C#仿PhotoshopCS6界面、WPF仿IE9、Google选项卡
- C# SQL插入出错 求帮助,急急急急!!!
- C#存取数据库技术
- 有谁用C#写创建和写入PowerPoint文件的经验没?
- 请教如何改变WinForm DataGrid 的列的列头的高度!网上没有找到。。。
- GDI+问题,我想从一个Bitmap文件中复制一个指定区域到一个新的Bitmap空白实例中,请各位大侠指点一二。
- 求可以应用在C#下的各种统计算法的控件?
- 求救,如何根据已有的xml schema来写一个xml文件呢?
- 急求一个多线程的简单程序,合适了马上给分
- 熟悉XML、UpdateGram、XSD的请进。(很郁闷,UP的有分。解决后立刻给分)
- 请教如何在C#中dllimport使用VB6编译的Activexdll文件?
- 网页一打开时就在网页中打开PDF文件,如何做
List <Student> listStudent=new List <Student>();
IEnumerable<string> listStudentQuery = from item in listStudent
where item.ID== "1"
select item.NAME;
{
if (p.Name=="aaa")
{
return true;
}
else
{
return false;
}
}Person p= list.Find(FindPerson);
DataTable.Select
List<Person> result = list.FindAll(delegate(Person p){ return p.name == "John"; });//寻找name为John的匹配项
/// 从泛型集合中按指定条件获取对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="source"></param>
/// <param name="fieldName"></param>
/// <param name="target"></param>
/// <returns></returns>
internal static T getObjectFromCaches<T>(List<T> source, string fieldName, object target) where T : BaseEntity
{
return source.Find(new Predicate<T>((c) => { return CompareObject(c, fieldName, target); }));
} /// <summary>
/// 查找某对象中的某个字段值是否与比较值一致
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="obj">比较对象</param>
/// <param name="fieldName">字段名</param>
/// <param name="target">目标值</param>
/// <returns></returns>
internal static bool CompareObject<T>(T obj, string fieldName, object target) where T : BaseEntity
{
Type type = obj.GetType(); //读取字段信息
FieldInfo fldInfo = type.GetField(fieldName);
if (fldInfo == null) return false; //获取字段值
object fldValue = fldInfo.GetValue(obj);
if (fldValue == null) return false; bool result = (fldValue.Equals(target)); return result;
}
试试这个,采用反射方式根据字段名称检测数据
ClassHelper<Person>.FindClass(p, "Name", OperationEnum.EqualTo, "aaa"); public class ClassHelper<T>
{
public static bool FindClass(T t, string fieldName, OperationEnum operation,object fieldValue)
{
bool result = false;
Type type = typeof(T);
PropertyInfo pi = type.GetProperty(fieldName);
if (null == pi) return false;
object obj = pi.GetValue(t,null);
switch (operation)
{
case OperationEnum.EqualTo:
result = obj == fieldValue;
break;
case OperationEnum.NotEqualTo:
result = obj == fieldValue;
break;
default:
break;
}
return result;
}
} public enum OperationEnum
{
EqualTo,
NotEqualTo
}
List<Person> lst= new List<Person> ();
List<Person> l= lst.FindAll(delegate(Person p){
if (p.Name.StartsWith(""))
return true;
return false;
});