各位好!有个表,叫mail表吧,里面的一个字段MailSend,字符串类型的,它的格式是:“abc@qq.com,ghk@qq.com”,假设所有行的后缀都一样是@qq.com,现在在程序里面用EF查询,
页面就输入这个字段的值,假设我输入"abc"或输入“ghk,abc”,那么能匹配这个“abc@qq.com,ghk@qq.com”
假设我输入“abc,gbc”或输入其他字符,那么不能匹配,查询不出来。给个代码或思路吧
建议你直接写sql,然后用EF动态调用。。。
这是两件事
先说简单一点的,输入abc,匹配abc@qq.com
var query = from c in DataContext.mail
where c.MailSend.contains('abc')
至于你要输入"ghk,abc"进行匹配,这个是另外一个题目,你得先把这东西拆成两个单词再进行匹配。
public class mail { public string MailSend; } public mail GetResult(string condition, List<mail> targets)//判断结果是否为空即可 { string[] conditions = condition.Split(','); mail firstResult = (mail)from t in targets where t.MailSend.Contains(conditions[0]) select t; if (firstResult == null) return null; foreach (string c in conditions) { mail Result = (mail)from t in targets where t.MailSend.Contains(c) select t; if (!firstResult.MailSend.Equals(Result.MailSend)) { firstResult = null; break; } } return (mail)firstResult; }
这种问题跟EF没有关系,EF最终也是走sql,而且这个问题用sql也不好解决,至少简单的like是解决不了你的问题的,除非你的关键字没有分割的都是一个,所以建议你把关键字分割后一个一个的查询