我可以解释我尝试做的最好方法是举个例子:
我的数据库中有一个字符串StackOverflow
,当用户输入OAW
时,我希望以任何顺序返回该字符串和包含这三个字符的任何其他单词。
我尝试过使用各种LINQ / Lambda表达式,但无济于事。
query.Where(a => a.SerialNumber.Contains(a));
我找到了一篇与我的相似的帖子here on SO,但它是用Java编写的。
我觉得我尝试做的事情非常简单,但我只是错过了它。任何帮助将不胜感激。
答案 0 :(得分:4)
您可以尝试这样的事情:
query.Where(str => value.All(str.SerialNumber.Contains));
对于数据库中的任何字词,您可以检查value
,OAW
,使用All
扩展方法的所有字符是否都包含在{{1}中}。
<强>更新强>
此
str.SerialNumber
等同于这个lambda表达式:
str.SerialNumber.Contains
x => str.SerialNumber.Contains(x)
是指我们应用x
的序列的随机元素。换句话说,All
的随机字符。
答案 1 :(得分:1)
您可以使用ContainsAll类型的函数。
public static bool ContainsAllItems(IEnumerable<T> a, IEnumerable<T> b)
{
return !b.Except(a).Any();
}
注意强>
该函数来自here
答案 2 :(得分:1)
你可以通过稍微修改你的代码来做到这一点:
public bool DoesContain(char[] identifiers, string containingString)
{
return !identifiers.Except(containingString.ToCharArray()).Any();
}
或:
private char[] identifiers = { /* Your identifiers*/ };
public bool DoesContain(string containingString)
{
return !identifiers.Except(containingString.ToCharArray()).Any();
}
如果传递的字符串包含任何指定的字符,则这些方法中的任何一个都将返回true。
注意:
来自Cameron MacFarland的解决方案this question。
答案 3 :(得分:0)
看起来你可以进行多重比较和&amp;&amp;他们,或使用正则表达式。我更喜欢前者,这是一个简洁的例子:
arrOfCharacters.All(a.SerialNumber.Contains)
虽然您可能需要使用ToUpperInvariant()