应用扩展方法的方法是什么?

时间:2009-10-19 10:58:26

标签: c# linq

试图解决问题时

  

一组九个元素中有多少七个元素子集(不可重复)?

我试过

IEnumerable<string> NineSet =new string[] {"a","b","c","d","e","f","g","h","i"};

var SevenSet = 
from first in NineSet
from second in NineSet
where first.CompareTo(second)< 0 && first.Count() + second.Count()==7
select new { first, second };

阻止我尝试使用first.Count()second.Count()的问题是什么?我没有检查它是否是解决问题的最佳方案。

3 个答案:

答案 0 :(得分:3)

如前所述,你所记下的内容将导致你无处可去。这是组合学的问题。 AFAIK在.NET框架中没有任何预先设计来解决组合问题,因此您必须实现正确的算法。如果你遇到困难,那里有解决方案,例如http://www.codeproject.com/KB/recipes/Combinatorics.aspx,您可以在其中查看来源,了解您需要执行的操作。

答案 1 :(得分:1)

第一个和第二个是字符串,所以你要计算他们的字符(这个编译,但是智能隐藏它)。
您正在寻找类似NineSet.Count(first.Equals)

的内容

答案 2 :(得分:1)

嗯...

  • 您没有显示错误消息,因此很难知道出现了什么问题
  • 每个元素都只有一个,所以我不确定你期望发生什么
  • 如您所知firstsecond是字符串,为什么不使用first.Lengthsecond.Length

作为一个侧面问题,我不认为这种方法会为你解决问题,我担心......