none
PagedCollectionView中这个条件过滤怎么写? RRS feed

  • 问题

  • 我要过滤出s3字段中包含有cc内容的记录,下列写法错误,应该怎么写?

    Predicate<object> predicate;

    predicate = x => ((struct)x).s3.IndexOf(cc) >= 0;

    2010年4月2日 3:14

答案

  • 你使用Linq进行一次过滤查询就可以了,如下示例代码:

    public class Book
    {
        public string S3 { get; set; }
    }

     

    List<Book> list = new List<Book>();
    list = (from l in list where l.S3.Contains("cc") == true select l).ToList();

    2010年4月3日 12:35

全部回复

  • 你使用Linq进行一次过滤查询就可以了,如下示例代码:

    public class Book
    {
        public string S3 { get; set; }
    }

     

    List<Book> list = new List<Book>();
    list = (from l in list where l.S3.Contains("cc") == true select l).ToList();

    2010年4月3日 12:35
  • 谢谢回复

    楼上的方法是生成新的list  ,这几天我试了下,不太满意, 我需要操作 PagedCollectionView

    不知有什么办法?再赐教

    2010年4月14日 2:36
  • myPCV.Filter = (object o) => ((YOURTYPE)o).S3.Contains("cc");

    2010年4月14日 5:11
  • myPCV.Filter = (object o) => ((YOURTYPE)o).S3.Contains("cc");


     我写成 pcv.Filter = x => ((All_struct)x).S3.Contains("cc");不行。

    运行时提示 "未将对象引用设置到对象的实例。"

    但pcv.Filter = x => ((All_struct)x).S3=="cc";是行的。

     

     

    2010年4月14日 5:40
  • 你可能有些S3的值是null

    试试这样:

    pcv.Filter = x => ((All_struct)x).S3 != null &&((All_struct)x).S3.Contains("cc");

    2010年4月14日 5:55
  • 果然是 null的问题,谢谢
    2010年4月14日 6:13