aspx: <x:DropDownList ID="ddlCategoryID" runat="server" Label="选项类型"AutoPostBack="false">
</x:DropDownList>
cs: private void InitData()
{
List<ProductCategoryDTO> categoryList = new ProductCategoryBLL().GetList();
categoryList.Add(new ProductCategoryDTO() { CategoryID = 0, Name = "不限", IsActive = "T" });
ddlCategoryID.DataSource = categoryList.Where(t => t.IsActive == "T").OrderBy(t => t.CategoryID);
ddlCategoryID.DataTextField = "Name";
ddlCategoryID.DataValueField = "CategoryID";
ddlCategoryID.DataBind();
}
经过自己的研究,只有这个看不懂了
(t => t.IsActive == "T").OrderBy(t => t.CategoryID)
t是什么
还有上面的List<>泛型不会,希望得到帮助
获取数据源,绑定数据。
ddlCategoryID.DataTextField = "Name";
ddlCategoryID.DataValueField = "CategoryID";这2句我知道意思了,上面三行和最后一行能不能解释下
@new_ITP: 第一行是获取数据,数据是一个list集合
第二行,往集合中添加一个对象
最好一样,必须这么用,绑定数据源时,必用,调用系统方法
@lucika.zh:谢谢! where条件里的(t => t.IsActive == "T").OrderBy(t => t.CategoryID)这个能不能解释下,都是什么玩意啊,没见过=>,臆测大于等于后面也不是数值啊 ,到底上面意思啊
@new_ITP: 第一个条件是IsActive属性等于T,第二个,是排序。写法是基于对象的查询。
@new_ITP: 结贴吧。问题已经得到圆满的解决了。
那个就是Lambda,园子里有很多这类的文章,搜一下就可以了
Where(t => t.IsActive == "T")相当于在categoryList中找出IsActive等于T的对象
OrderBy(t => t.CategoryID)相当于根据CategoryID进行升序排列
这么说t=>t.IsActive是一个整体啊,不是一个语句。。是这样吗
t ,随便写别的什么字母都行,单词也行,t 就是代表序列中的单个项 这样理解 ,循环搜索出序列中IsActive属性等于T的项
我现在已经理解了整条语句是什么意思了,t代表序列中的单个项,那t=>t.attribute我还是没法理解,如果筛选出IsActive属性等于T的,直接IsActive="T"不就好了或者t.IsActive="T",我现在的问题就在于在=>这里堵住了,走不出去了,没法理解
@new_ITP: 都有一些规范的写法