同事代码:
public static List<SimpleSoft> GetOrderedSofts(List<SimpleSoft> softs)
{
List<SimpleSoft> orderSofts = new List<SimpleSoft>();
var softsEnum = from a in softs
orderby a.f_identifier ascending
select a;
foreach (var soft in softsEnum)
{
if (orderSofts.Count > 0)
{
SimpleSoft simpleSoft = orderSofts[orderSofts.Count - 1];
if (soft.f_identifier != simpleSoft.f_identifier)
{
orderSofts.Add(soft);
}
else
{
try
{
Version v1 = new Version(simpleSoft.f_version);
Version v2 = new Version(soft.f_version);
if (v2.CompareTo(v1) > 0)
{
orderSofts[orderSofts.Count - 1] = soft;
}
}
catch
{
if (soft.f_version.CompareTo(simpleSoft.f_version) > 0)
{
orderSofts[orderSofts.Count - 1] = soft;
}
}
}
}
else
{
orderSofts.Add(soft);
}
}
return orderSofts;
}
{
List<SimpleSoft> orderSofts = new List<SimpleSoft>();
var softsEnum = from a in softs
orderby a.f_identifier ascending
select a;
foreach (var soft in softsEnum)
{
if (orderSofts.Count > 0)
{
SimpleSoft simpleSoft = orderSofts[orderSofts.Count - 1];
if (soft.f_identifier != simpleSoft.f_identifier)
{
orderSofts.Add(soft);
}
else
{
try
{
Version v1 = new Version(simpleSoft.f_version);
Version v2 = new Version(soft.f_version);
if (v2.CompareTo(v1) > 0)
{
orderSofts[orderSofts.Count - 1] = soft;
}
}
catch
{
if (soft.f_version.CompareTo(simpleSoft.f_version) > 0)
{
orderSofts[orderSofts.Count - 1] = soft;
}
}
}
}
else
{
orderSofts.Add(soft);
}
}
return orderSofts;
}
Linq改造后的代码:
public static List<SimpleSoft> GetOrderedSofts(List<SimpleSoft> softs)
{
List<SimpleSoft> orderSofts = new List<SimpleSoft>();
var softsGroup = from x in softs group x by x.f_identifier into y select y;
foreach (var group in softsGroup)
{
var softsOrder = group.OrderByDescending(ver=>ver.f_version).Take(1);
foreach (var soft in softsOrder)
{
orderSofts.Add(soft);
}
}
return orderSofts;
}
{
List<SimpleSoft> orderSofts = new List<SimpleSoft>();
var softsGroup = from x in softs group x by x.f_identifier into y select y;
foreach (var group in softsGroup)
{
var softsOrder = group.OrderByDescending(ver=>ver.f_version).Take(1);
foreach (var soft in softsOrder)
{
orderSofts.Add(soft);
}
}
return orderSofts;
}
以此做一个简单的记录,方便回顾 。。。
今天又改进了一下代码, 一句话搞定 。。。。
from x in Items group x by x.ProductId into y select new {grouping=(from g in y orderby g.ListPrice select g).Take(1)}
浙公网安备 33010602011771号