求算法

jcyluck 2009-07-06 08:07:33
一个字符串:
string str = "达标,偏低,过高,过高,达标,偏低,过高,达标,偏低";

每3个连续的逗点为一个对象进行分拆(1至3,2至4,3至5),分拆结果如下(7行1列):

达标,偏低,过高
偏低,过高,过高
过高,过高,达标
过高,达标,偏低
达标,偏低,过高
偏低,过高,达标
过高,达标,偏低

对上述纪录进行分组,并得出分组结果,要求得出下面的信息(5行2列):

达标,偏低,过高 2
过高,达标,偏低 2
过高,过高,达标 1
偏低,过高,达标 1
偏低,过高,过高 1


求效率最高的方法。
...全文
42 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zenowolf 2009-07-07
  • 打赏
  • 举报
回复
up~
oec2003 2009-07-06
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, EventArgs e)
{
string str = "达标,偏低,过高,过高,达标,偏低,过高,达标,偏低";
List<Temp> list = new List<Temp>();

string[] strArray = str.Split(',');
for (int i = 0; i < strArray.Length-2; i++)
{
string name=strArray[i] + "," + strArray[i + 1] + "," + strArray[i + 2];
list.Add(new Temp(name,1));
}
var result = from p in list
group p by p.Name into g
select new
{
Name = g.Key,
Count = g.Sum(p => p.Count)
};

this.Repeater1.DataSource = result.ToList();
this.Repeater1.DataBind();
}

public class Temp
{
public string Name { get; set; }
public int Count { get; set; }

public Temp(string name, int count)
{
Name = name;
Count = count;
}
}




<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
name:<%# Eval("Name") %><br />
count:<%# Eval("Count") %><br /><hr />
</ItemTemplate>
</asp:Repeater>

qqiuzaihui 2009-07-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 evan_chan 的回复:]
string[] list=str.Split(',');
int i;
for(int j=0;j <list.Length-2;j++)
{
  for(i=j;i <j+3;i++)
  {
    //具体用datatable来存吧,多设个计数列


  }
}
[/Quote]

用DataTable保存好之后, 使用 DataTable.select(expression)进行统计就行了。
V68V6 2009-07-06
  • 打赏
  • 举报
回复
up
jf
Evan_Chan 2009-07-06
  • 打赏
  • 举报
回复
string[] list=str.Split(',');
int i;
for(int j=0;j<list.Length-2;j++)
{
for(i=j;i<j+3;i++)
{
//具体用datatable来存吧,多设个计数列


}
}
十八道胡同 2009-07-06
  • 打赏
  • 举报
回复
得到那些个分组可以用一次for循环,结果进一个结构体,
结构体体内按照某种条件排序,最后统计分组出现的次数

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧