首页 新闻 会员 周边

Linq 模糊查询

0
悬赏园豆:5 [已解决问题] 解决于 2011-12-09 22:59

怎么写Linq的模糊查询  谢谢

1
菜中菜的主页 菜中菜 | 初学一级 | 园豆:123
提问于:2011-12-09 11:22
< >
分享
最佳答案
0

用contain()方法就可以了

收获园豆:1
悟行 | 专家六级 |园豆:12559 | 2011-12-09 13:39
其他回答(3)
0
string query1 = "A";
string query2 = "";
string query3 = "C";
List<string> strList = new List<string>() { "A", "B", "C", "D", "E", "F", "G" };
var query = strList.Select(c => c);
if (query1!="")
{
query = query.Where(c => c.Equals(query1));
}
if (query2 != "")
{
query = query.Where(c => c.Equals(query2));
}
if (query3 != "")
{
query = query.Where(c => c.Equals(query3));
}
query.ToList();

希望对你有帮助o(∩_∩)o

收获园豆:1
Sharp_Knife | 园豆:24 (初学一级) | 2011-12-09 11:26
2

你看下我下面的方法,用Contains/IndexOf/StartsWith/EndsWith分明模拟sql中的模糊查询吧,

List<string> sourceList = new List<string>() { "AABFD", "BEE", "CDSA", "DTKTQ" };

string filter = "A";

List<string> resultList1 = sourceList.Where(str => str.Contains(filter)).ToList();
List<string> resultList2 = sourceList.Where(str => str.IndexOf(filter)>0).ToList();
List<string> resultList3 = sourceList.Where(str => str.StartsWith(filter)).ToList();
List<string> resultList4 = sourceList.Where(str => str.EndsWith(filter)).ToList();

 

收获园豆:2
LCM | 园豆:6876 (大侠五级) | 2011-12-09 11:30

m.A0907.Contains("福州大学")
true
m.A0907.Contains("福州大学1")
false

模糊查询如果是中文是全字匹配,根本是用不了的

支持(0) 反对(0) 野味@有点甜 | 园豆:200 (初学一级) | 2016-11-08 17:13
0

LINQ to SQL和EF中的SQL LIKE 比较

下面这些字符串方法会被翻译成SQL的LIKE操作符:Contains、StartsWith、EndsWith。

比如:c.Name.Contains ("abc") 翻译成customer.Name LIKE '%abc%' (或者与之等价的参数版本)。

需要注意的是,在使用Contains时,我们只能用来与本地计算的表达式进行比较,如果要和另外一列进行比较,我们必须借助于SqlMethod.Like方法:

            IQueryable<Purchase> query = purchases
.Where(p => SqlMethods.Like(p.Description, "%" + p.Customer.Name + "%"))
.OrderBy(p => p.ID)
.Select(p => p);

我的博客:LINQ之路11:LINQ Operators之过滤(Filtering) 中正好讨论了这一问题。

收获园豆:1
Life a Poem | 园豆:437 (菜鸟二级) | 2011-12-09 12:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册