比较字符串中的字符是否是 C# 中第二个字符串的子集

Compare if the characters in a string are a subset of a second string in C#

我正在开发一个游戏,我想检查一个字符串的字符是否包含在另一个字符串中。显然,一套是我的第一选择,但我想考虑重复项。例如:

"met".IsContainedWithin("meet"); => true
"meet".IsContainedWithin("met"); => false

多集会很好,但听起来 C# 没有类似的东西。我可以迭代地做,但我想知道是否有更简单的方法(也许使用 LINQ)。谢谢!

编辑:

我不是很清楚。无论字母的顺序如何,我都希望它 return 为真:

 "git".IsContainedWithin("light")=> true
 "pall".IsContainedWithin("lamp")=> false

这对我有用:

public static bool IsContainedWithin(this string @this, string container)
{
    var lookup = container.ToLookup(c => c);
    return @this.ToLookup(c => c).All(c => lookup[c.Key].Count() >= c.Count());
}

我是这样测试的:

var tests = new []
{
    "met".IsContainedWithin("meet"),
    "meet".IsContainedWithin("met"),
    "git".IsContainedWithin("light"),
    "pall".IsContainedWithin("lamp"),
};

我得到了这些结果:

True 
False 
True 
False