日期:2014-05-20  浏览次数:20738 次

你看到这个标题就一定要进来看看,Linq操作数组的问题,我在等...
现有这样一个数据:

string []A={ "标识", "日期|年度", "日期|季度", "日期|月度","商品|品名", "省区", "本期|销量", "本期|成本"};

请问,如何用Linq把“商品|品名”这样的元素转化为“商品品名”,最后返回听数组是:

{"标识", "日期|年度", "日期|季度", "日期|月度","商品品名", "省区", "本期|销量", "本期|成本"}

规则是:数组中竖线前的文字只有一项的就把竖线删掉。像"本期|销量", "本期|成本"就有2个“本期”,所以不需要删掉。

------解决方案--------------------
C# code

 A= (from x in A
               let temp=A.SelectMany(a=>a.Split('|')).GroupBy(a=>a).Where(g=>g.Count()>1).Select(g=>g.Key)
               select temp.Any(q=>x.Contains(q))?x:x.Replace("|","")).ToArray();

------解决方案--------------------
探讨

还好我没有结贴,代码写的还是有一点问题,比如这样的3楼的代码就不行了,

string []A={ "标识", "日期|年度", "日期|季度", "日期|月度","商品|品名", "省区", "本期|销量", "本期|成本","上期|销量","上期|成本"};