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

C# 比较字符串中的字符是否是C中第二个字符串的子集#,c#,linq,string-comparison,C#,Linq,String Comparison,我正在做一个游戏,我想检查一个字符串的字符是否包含在另一个字符串中。显然,一套是我的第一选择,但我想考虑重复的。例如: "met".IsContainedWithin("meet"); => true "meet".IsContainedWithin("met"); => false 一个多集当然不错,但听起来C#没有这样的东西。我可以迭代地做,但我想知道是否有一种更简单的方法(使用LINQ)。谢谢 编辑: 我不太清楚。无论字母顺序如何,我都希望返回true: "git".IsC

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

"met".IsContainedWithin("meet"); => true
"meet".IsContainedWithin("met"); => false
一个多集当然不错,但听起来C#没有这样的东西。我可以迭代地做,但我想知道是否有一种更简单的方法(使用LINQ)。谢谢

编辑:

我不太清楚。无论字母顺序如何,我都希望返回true:

 "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 

你试过什么吗?我试着把它放到一个集合中,试着把它们联合起来,然后检查计数是否相同,但这不能解释重复。作为子集的规则是什么?因为我不明白“见面”是“见面”的子集。@YuvalItzchakov不是一个合适的子集。