用contain()方法就可以了
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
你看下我下面的方法,用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();
m.A0907.Contains("福州大学")
true
m.A0907.Contains("福州大学1")
false
模糊查询如果是中文是全字匹配,根本是用不了的
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) 中正好讨论了这一问题。