Flex中利用SortField和Sort类对ArrayCollection进行排序的例子

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundColor="white"
creationComplete="init()">


<fx:Script>
<![CDATA[
import mx.collections.SortField;
import mx.collections.Sort;
import mx.collections.ArrayCollection;


[Bindable]
private var arrColl:ArrayCollection;


/** This method gets called by the main mx:Application tag and initializes/populates the ArrayCollection object with a bunch of random numbers. */
private function init():void
{
var i:int;


/* Initialize and populate the ArrayCollection object. */
arrColl=new ArrayCollection();
for (i=0; i < 20; i++)
{
arrColl.addItem({data: getRandomNumber().toFixed(4)});
}
}


/** This method returns a random floating-point number between 0 and 10000. */
private function getRandomNumber():Number
{
return Math.random() * 10000;
}


/** This method gets called by the Button control's click handler and creates a new SortField and Sort object which are used to sort the ArrayCollection. */
private function button_click():void
{
/* Create the SortField object for
the "data" field in the ArrayCollection
object, and make sure we do a numeric sort.
*/
var dataSortField:SortField=new SortField();
dataSortField.name="data";
dataSortField.numeric=true;


/* Create the Sort object and add the
SortField object created earlier to the
array of fields to sort on. */
var numericDataSort:Sort=new Sort();
numericDataSort.fields=[dataSortField];


/* Set the ArrayCollection object's
sort property to our custom sort,
and refresh the ArrayCollection. */
arrColl.sort=numericDataSort;
arrColl.refresh();
}
]]>
</fx:Script>


<mx:List id="list"
dataProvider="{arrColl}"
textAlign="right"
labelField="data"
width="300"/>


<mx:Button id="button"
  x = "200" y="400"
  label="sort items"
  click="button_click()"/>


</s:Application>
在 C# WinForm 应用程序中,使用 LINQ 对数据库进行排序筛选操作是一种高效且简洁的方式。LINQ 提供了统一的语法来处理内存中的集合以及数据库中的数据,使得代码更具可读性可维护性[^2]。 ### 数据筛选 数据筛选可以通过 `where` 子句实现,用于获取满足特定条件的数据子集。例如,若要筛选出特定属性值的记录,可以编写如下 LINQ 查询: ```csharp using (var context = new MyDbContext()) { var filteredUsers = from user in context.Users where user.Name.StartsWith("A") select user; dataGridView1.DataSource = filteredUsers.ToList(); } ``` 上述代码从 `Users` 表中筛选出名字以字母 "A" 开头的用户,并将结果绑定到 `DataGridView` 控件中[^1]。 ### 数据排序 数据排序可以通过 `orderby` 子句实现,用于对数据进行升序或降序排列。例如,若要根据用户的 `Age` 属性进行升序排列,可以使用以下代码: ```csharp using (var context = new MyDbContext()) { var sortedUsers = from user in context.Users orderby user.Age select user; dataGridView1.DataSource = sortedUsers.ToList(); } ``` 如果需要按多个字段排序,可以在 `orderby` 后添加多个排序字段,例如: ```csharp var sortedUsers = from user in context.Users orderby user.Name ascending, user.Age descending select user; ``` 该查询首先按 `Name` 升序排列,然后在相同 `Name` 的情况下按 `Age` 降序排列[^3]。 ### 筛选与排序结合使用 在实际应用中,通常需要同时进行筛选排序操作。例如,筛选出年龄大于 20 的用户,并按照 `Email` 字段排序: ```csharp using (var context = new MyDbContext()) { var query = from user in context.Users where user.Age > 20 orderby user.Email select user; dataGridView1.DataSource = query.ToList(); } ``` 上述代码结合了数据筛选排序功能,实现了对数据库数据的复合操作。 ### 代码整合性与扩展性 为了提高代码的可维护性,可以将查询逻辑封装为方法,并通过参数化方式支持动态筛选排序。例如,可以通过传入不同的排序字段或筛选条件来实现灵活的数据查询。 ```csharp private List<User> GetFilteredAndSortedUsers(string filterName, string sortField) { using (var context = new MyDbContext()) { var query = context.Users.AsQueryable(); if (!string.IsNullOrEmpty(filterName)) { query = query.Where(u => u.Name.Contains(filterName)); } switch (sortField) { case "Name": query = query.OrderBy(u => u.Name); break; case "Age": query = query.OrderBy(u => u.Age); break; default: query = query.OrderBy(u => u.Id); break; } return query.ToList(); } } ``` 该方法支持动态筛选排序,提高了代码的灵活性复用性[^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值