我有这样的课:
class SortNode
{
public Int32 m_valRating = 0;
public SortNode(Int32 valRating)
{
this.m_valRating = valRating;
}
}
Run Code Online (Sandbox Code Playgroud)
和一些清单refSortNodeList
:
List<SortNode> refSortNodeList = new List<SortNode>();
Random refRandom = new Random();
for (int i = 0; i < 100; ++i)
{
refSortNodeList.Add(new SortNode(refRandom.Next(-10, 30)));
}
foreach (var varSortNode in refSortNodeList)
{
Console.WriteLine("SortNode rating is {0}", varSortNode.m_valRating);
}
Run Code Online (Sandbox Code Playgroud)
如何轻松地refSortNodeList
按m_valRating
字段排序?或者我可能需要使用其他List
课程?
Mar*_*ell 62
list.Sort((x,y) =>
x.m_valRating.CompareTo(y.m_valRating));
Run Code Online (Sandbox Code Playgroud)
Jon*_*nna 14
到位:
refSortNodeList.Sort(
(x, y) =>
x == null ? (y == null ? 0 : -1)
: (y == null ? 1 : x.m_valRating.CompareTo(y.m_valRating))
);
Run Code Online (Sandbox Code Playgroud)
创建一个新的枚举:
var newEnum = refSortNodeList.OrderBy(x => x.m_valRating);
Run Code Online (Sandbox Code Playgroud)
创建新列表:
var newList = refSortNodeList.OrderBy(x => x.m_valRating).ToList();
Run Code Online (Sandbox Code Playgroud)
就地是最快和最大的内存效率,但如果你想保留旧列表也没有好处.
接下来比最后一个快,并在结果出现时给出结果,但你必须重新进行排序再次使用它,在这种情况下,第三个是要去的那个.
使用Linq命令.
var mySortedList = refSortNodeList.OrderBy(x => x.m_valRating);
Run Code Online (Sandbox Code Playgroud)
这是一个真实的实例,我从数据库中提取列表,但它是完全相同的概念.
vendorProducts = (from vp in db.COMPANIES_VND_PRODUCTS
join p in db.CT_CT_INV_CLASSES on vp.CLASS_ID equals p.CLASS_ID
join m in db.CT_CT_MODALITY_CODES on vp.MODALITY_ID equals m.MODALITY_ID
where vp.COMPANY_ID == companyId
select new ProductTypeModality
{
Active = p.ACTIVE.Equals("Y") ? true : false,
BioMedImaging = p.BIOMED_IMAGING,
Code = p.CLASS_CODE,
Description = p.DESCRIPTION,
Id = p.CLASS_ID,
PricingMargin = p.PRICING_MARGIN,
ModalityCode = m.MODALITY_CODE,
ModalityId = m.MODALITY_ID,
VendorId = companyId
}).OrderBy(x => x.Code).ToList<ProductTypeModality>();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35824 次 |
最近记录: |