使用LINQ预先搜索数据 [英] Advance Search of data using LINQ

查看:60
本文介绍了使用LINQ预先搜索数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我现在有1000条收集记录,我想要搜索特定于数据的字段

i have 1000 record of collection now i want search data specific field

推荐答案

SoDCDataContext dc = new SoDCDataContext(); 
var persons = (dc.usp_Persons(personId, firstName, lastName,               site)).ToList();
But it is better to see all our logic in the PersonBL class (here really all our business logic has to be!) and use stored procedure in, may be, very special and complicated cases. So, we just change our stored procedure to some LINQ code. Suppose, we use some special class to see persons selected data: 
public class C_PersonDGV 
    { 
        public short PersonNum { get; set; } 
        public string PersonID { get; set; } 
        public string FirstName { get; set; } 
        public string LastName { get; set; } 
        public string Email { get; set; } 
        public string Telephon { get; set; } 
        public string Note { get; set; } 
        public short? SiteHome { get; set; } 
        public string SiteName { get; set; } 
        public DateTime? LastUpdate { get; set; } 
    }
Our DataObjectMethod of the PersonBL class (in SoBL project) will look so: 
  
[DataObjectMethod(DataObjectMethodType.Select, true)] 
public static List<C_PersonDGV> FindPersonsDGV( 
    string personId, string firstName, 
    string lastName, short site) 
{ 
    SoDCDataContext dc = new SoDCDataContext(); 

    IEnumerable<C_PersonDGV> personsDGV = 
        from p in dc.C_Persons 
        where 
        p.PersonID.Equals((personId.Equals("-999")) ? 
            p.PersonID : personId) 
        && 
        p.FirstName.Equals((firstName.Equals("-999")) ? 
            p.FirstName : firstName) 
        && 
        p.LastName.Equals((lastName.Equals("-999")) ? 
            p.LastName : lastName) 
        && 
        p.SiteHome.Equals(site == -999 ? 
            p.SiteHome : site) 
        select new C_PersonDGV 
        { 
            PersonNum = p.PersonNum, 
            PersonID = p.PersonID, 
            FirstName = p.FirstName, 
            LastName = p.LastName, 
            Email = p.Email, 
            Telephon = p.Telephone, 
            Note = p.Note, 
            SiteHome = p.SiteHome, 
            SiteName = p.NC_Site.SiteName, 
            LastUpdate = p.LastUpdate 
        }; 

    ////------or lamda---------- 
    //IEnumerable<C_PersonDGV> personsDGV = dc.C_Persons.Where 
    //    ( 
    //        p => 
    //        p.PersonID.Equals((personId.Equals("-999")) ? 
    //            p.PersonID : personId) 
    //        && 
    //        p.FirstName.Equals((firstName.Equals("-999")) ? 
    //            p.FirstName : firstName) 
    //        && 
    //        p.LastName.Equals((lastName.Equals("-999")) ? 
    //            p.LastName : lastName) 
    //        && 
    //        p.SiteHome.Equals(site == -999 ? 
    //            p.SiteHome : site) 
    //    ).Select(p => new C_PersonDGV 
    //        { 
    //            PersonNum = p.PersonNum, 
    //            PersonID = p.PersonID, 
    //            FirstName = p.FirstName, 
    //            LastName = p.LastName, 
    //            Email = p.Email, 
    //            Telephon = p.Telephone, 
    //            Note = p.Note, 
    //            SiteHome = p.SiteHome, 
    //            SiteName = p.NC_Site.SiteName, 
    //            LastUpdate = p.LastUpdate 
    //        } 
    //    ); 
    ////--------------------- 

    return personsDGV.ToList(); 
}


这篇关于使用LINQ预先搜索数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆