首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

linq to sql 模糊查询解决方法

2012-12-14 
linq to sql 模糊查询linq 模糊查询,查询的字段名不定,字段名我在下拉列表中选择,我选择哪个就对哪个字段

linq to sql 模糊查询
linq 模糊查询,查询的字段名不定,字段名我在下拉列表中选择,我选择哪个就对哪个字段进行模糊查询,
这样的查询语句怎么写啊
[解决办法]
模糊查询就要做的事比较多了。你看一下我写的linq 动态查询吧
http://user.qzone.qq.com/452591170/infocenter
[解决办法]
方法很多:

1.使用System.Linq.Dynamic

2.披着Linq的外衣拼接SQL语句
http://www.cnblogs.com/snowdream/archive/2008/07/18/1246308.html

[解决办法]

            //以Norhwind数据库为例

            //假如查询CustomerID
            Query(o => o.CustomerID.Contains("aaaa"));

            //假如查询ShipAddress
            Query(o => o.ShipAddress.Contains("aaaa"));

            Console.ReadKey();
        }

        static List<l8r.Orders> Query(Func<l8r.Orders, bool> predicate)
        {
            return DbContent.Orders.Where(predicate).Select(o => o).ToList();
        }

[解决办法]
if 判断  字段名,Contains 进行模糊
[解决办法]
以 Northwind 为例:
using (NorthwindDBDataContext northwind = new NorthwindDBDataContext(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString))
        {
            var productsInfo = from p in northwind.Products select p;

            if (!string.IsNullOrEmpty(txtProductName.Text))
                productsInfo = productsInfo.Where(p => p.ProductName.Contains(txtProductName.Text));

            grvProductInfo.DataSource = productsInfo;
            grvProductInfo.DataBind();


        }

关键代码给出,使用时根据需求进一步修改。
[解决办法]
IEnumerable<Objects> fiterObjs = objs.Where(x => x.ObjectName!=null&&x.ObjectName.Contains(""));
构造一个查询及表达式树  

Linq动态条件查询 
[解决办法]
参考VS安装目录下的 \Samples\2052\CSharpSamples\LinqSamples,有一个工程叫“DynamicQuery”,然后看看 Program.cs 里面的代码,它可以用字符串的形式来查:Select("New(CompanyName as Name, Phone)"),就是说,你可以动态构造这个 select 返回值。
[解决办法]
跟你说个最简单的方法,放心这种方法最终也是生成一条SQL语句执行的

var query = from p in dc.TblTest select p;
if (conditon1) query = from p in query where ... select p;


if (conditon2) query = from p in query where ... select p;
...
if (conditonn) query = from p in query where ... select p;

query = from p in query orderby ... select p;

return query.ToList();
[解决办法]
我的做法是跟3楼类似,不过我是在前台生成一个List<Expression>集合,然后通过bll传给dal去遍历where,最后在return
[解决办法]
Contains
[解决办法]
该回复于2010-12-24 16:22:05被版主删除
[解决办法]

 var productinfo = from p in pro where p.ProductName.Contains("aa") select p;

[解决办法]
引用:
方法很多:

1.使用System.Linq.Dynamic

2.披着Linq的外衣拼接SQL语句
http://www.cnblogs.com/snowdream/archive/2008/07/18/1246308.html


学习了
[解决办法]
object[] GetData(string name){
var data = from a in dc.Tasks select a;
if(!string.IsNullOrEmpty()){
data = data.Where(a=>a.Name.Contain(name));
}
return data.ToArray();
}
[解决办法]
var task = from t in db.Tasks 
                           where t.Task.IndexOf(txtSearch) != -1 
                           select t;
[解决办法]
使用延迟查询就可以了

比如查询学生数据表中的信息,条件可以有stuName,stuNum使用下面的Linq查询

        public List<tb_stuInfo> Search(string stuName,string stuNum)
        {
            DC_StudentDataContext dc_stuCtx = new DC_StudentDataContext();
            var query = from r in dc_stuCtx.tb_stuInfo
                        select r;
            if(!string.IsNullOrEmpty(stuName))
            {
                query.Where(c => c.stuName == stuName);
            }
            if (!string.IsNullOrEmpty(stuNum))
            {
                query.Where(c => c.stuNum == stuNum);
            }



            return query.ToList();
        }


[解决办法]
该回复于2011-11-15 14:26:52被版主删除
[解决办法]
该回复于2011-02-11 10:38:01被版主删除
[解决办法]
引用:
IEnumerable<Objects> fiterObjs = objs.Where(x => x.ObjectName!=null&amp;&amp;x.ObjectName.Contains(""));
构造一个查询及表达式树  

Linq动态条件查询

看你的总是有意外收获。。。话说我报错的原因就是没有判断是否null

热点排行