『壹』 C#的問題,怎麼在List集合中篩選數據
方法一:Linq
ChannelList就是一個List類型的數據,IsOpen是其元素的屬性
channelCount=(fromchannelinDevicesManager.Instance.CurrentDevice.ChannelList
wherechannel.IsOpen
groupchannelbychannel.ChannelID).Count();
方法二:泛型委託Predicate<T>
publicdelegateboolPredicate<inT>(
Tobj
)
方法三、
///<summary>
///篩選運送方式
///</summary>
///<paramname="list">運送方式集合</param>
///<paramname="strType">運送方式</param>
///<returns></returns>
privateList<FeeRuleDto>selectList(List<FeeRuleDto>list,stringstrType)
{
returnlist.FindAll(delegate(FeeRuleDtoinfo){
if(info.DeliveryType.ToString()==strType)
{
returntrue;
}
else{
returnfalse;
}
});
}
方法四、
使用List<T>獲取資料庫表的時候,每次用戶操作都重新訪問資料庫,然後返回List<T>,會嚴重影響程序運行效率的方式,其實List<T>自帶有篩選的方法,把想要的數據篩選到另一個List<T>中,不用重新訪問資料庫,直接篩選後羨模綁定控制項顯示即可。
示例如下:
publicNumberModelcurrentmark;
publicMainFrmmainFrm;
privateList<宏派茄GoodsModel>goodslist;
privateList<GoodsKindModel>goodskindlist;
privatevoidlstgoodkind_SelectedIndexChanged(objectsender,EventArgse)
{
try
{
if(lstgoodkind.SelectedValue.ToString()!="XY.Model.GoodsKindModel")
{
stringid=lstgoodkind.SelectedValue.ToString();
stringkname=lstgoodkind.Text;
if(kname!="全部")
{
List<GoodsModel>glist=goodslist.FindAll(delegate(GoodsModelp){returnp.GoodsKind==kname;});蔽察
bindgoods(dgvgoods,glist);
}
else
{
bindgoods(dgvgoods,goodslist);
}
}
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
}
}
privatevoidbtnAdd_Click(objectsender,EventArgse)
{
try
{
stringgid=dgvgoods.Rows[dgvgoo
例如:跳過List前50條,然後取100條,可寫為:
iclist_temp、iclist都為List類型
iclist_temp = iclist.Skip(50).Take(100).ToList();
取前100條,可以寫為:
iclist_temp = iclist.Take(100).ToList();
ds.SelectedRows[0].Index].Cells["goodsid"].Value.ToString();
GoodsModelgoods=goodslist.Find(delegate(GoodsModelp){returnp.ID==gid;});
XY.BLL.ConsumeBll.Add(goods,currentmark,mainFrm.user);
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
}
}
『貳』 242泛型集合Dictionary<K,V>的使用
1、Dictionary<K,V>泛型集合
Dictionary<K,V>通常稱為字典,<K,V>約束集合中元素類型
編譯時檢查類型約束, 無需拆箱裝箱操作,與哈希表類似
2、Dictionary<K,V>的存儲結構
對比: List對於無序念乎對象更有優勢
3、Dictionary<K,V>的應用
數據帆族查找:
數據遍歷:只能遍歷鍵或者值,不態高弊能同時遍歷
『叄』 C#怎麼定義泛型集合類型的函數,返回一個集合
list<int> num()
{.....
......
return num;}
『肆』 c#泛型集合的遍歷
有三種
很簡單,給你舉個例子:
1、先聲明一個亮雹Dictoinary<key,value>泛型集合
創建一個Student類的對象Student stu=new Student()(在這個類中
有一個name屬性)
Dictionary<student.name,Student> students=new Dictionary<student.name,Student>();
students.Add(stu);
2、開始遍歷
(1)可以用value遍歷就是Stuent的 對象
foreach(Student stu in students.values)
{}
(2)也可以用key遍歷 即student.name
foreach(string key in students.keys)
{}
3、另外list<T>泛型集合也同樣的道理,只不過,
它遍歷時要通過索引
例如梁指
list<Student> stu=new list<Student>();
stu(1).name;
希望你能明白橡鍵配
『伍』 c#泛型 練習題!!
1.實現員工考勤信息管理,A:實現新增員工(窗體中有工號,年齡,姓名,性別【下拉框】)B:使用dataGridview控斗瞎件展示員工信息,在datagridview總使用右鍵刪除,添加,在此控制項上方有文本框和一查詢按鈕,根空毀空據員工工號查詢 要求:使用泛型集合list的添加,查詢和刪除操作,使用泛型集合綁定dataGridview
2.實現員工打卡(簽到,簽退,在第一題的datagridview的窗體中右鍵操作再加上簽到,簽退標簽) A:每天只能簽到一次B:簽退前必須已經簽到C:顯示打卡記錄 要求:泛型集余歲合Dictionary的基本操作,使用泛型集合綁定dataGridview
『陸』 求泛型集合的增刪改查的代碼(c#)
public abstract class BaseDAL<T>:IBaseDAL<T> where T:class
{
net11Entities db = new net11Entities();
/// <summary>
/// 查詢
/// </summary>
/// <returns></returns>
public List<T> Select()
{
return db.Set<T>().ToList();
}
/// <summary>
/// 添加
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public int Add(T m)
{
db.Set<T>().Add(m);
return db.SaveChanges();
}
/// <summary>
/// 刪除
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public int Del(Expression<Func<T,bool>> where)
{
try
{
//DBContextFactory.GetDbContext();
var s= db.Set<T>().Where(where).FirstOrDefault();
db.Set<T>().Remove(s);
//db.Set<T>().Remove(m);
return db.SaveChanges();
}
catch(Exception se)
{
return 0;
}
}
/// <summary>
/// 修改
/// <和派/summary>
/// <param name="m">喚睜賀</param>
/// <returns></returns>
public int Upt(T m)
{
db.Set<T>().Attach(m);
db.Entry(m).State = System.Data.EntityState.Modified;
return db.SaveChanges();
}
}
不知道是不是你想要的。。。早梁。
『柒』 c#中BindingSource與泛型集合綁定數據後怎麼篩選篩選條件是類裡面的id屬性
只有實現 IBindingListView 介面的基礎列表才支持篩選
你用肆高的裂陸尺泛型悉寬集合不支持.
『捌』 有關泛型
可以的,下面是說明。
<T> where T : 類型約束
T:結構
類型參數旦老洞必須是值類型。可以指定除 Nullable 以外的任何值類型含姿。有關更多信息,請參見使用可空類型(C# 編程指南)。
T:類
類型參數必須是引用類型,包括任何類、介面、委託或數組類型。
T:new()
類型參數必須具有無參數模枯的公共構造函數。當與其他約束一起使用時,new() 約束必須最後指定。
T:<基類名>
類型參數必須是指定的基類或派生自指定的基類。
T:<介面名稱>
類型參數必須是指定的介面或實現指定的介面。可以指定多個介面約束。約束介面也可以是泛型的。
T:U
為 T 提供的類型參數必須是為 U 提供的參數或派生自為 U 提供的參數。這稱為裸類型約束。
msdn中的例子:
public class Employee
{
private string name;
private int id;
public Employee(string s, int i)
{
name = s;
id = i;
}
public string Name
{
get { return name; }
set { name = value; }
}
public int ID
{
get { return id; }
set { id = value; }
}
}
public class GenericList<T> where T : Employee
{
private class Node
{
private Node next;
private T data;
public Node(T t)
{
next = null;
data = t;
}
public Node Next
{
get { return next; }
set { next = value; }
}
public T Data
{
get { return data; }
set { data = value; }
}
}
private Node head;
public GenericList() //constructor
{
head = null;
}
public void AddHead(T t)
{
Node n = new Node(t);
n.Next = head;
head = n;
}
public IEnumerator<T> GetEnumerator()
{
Node current = head;
while (current != null)
{
yield return current.Data;
current = current.Next;
}
}
public T FindFirstOccurrence(string s)
{
Node current = head;
T t = null;
while (current != null)
{
//The constraint enables access to the Name property.
if (current.Data.Name == s)
{
t = current.Data;
break;
}
else
{
current = current.Next;
}
}
return t;
}
}
『玖』 如何過濾一個泛型集合中的相同數據
你的意思是不是record中有重復項??
如果是的話,你這一這樣做。
List<T> list = .findAll();
Set<T> set = new HashSet<T>();
set.addAll(list);
這里的set中就沒有回重復項了。
如果還答行得到list,你可以這樣做。
List<T> list2 = new ArrayList<T> ();
list.addAll(set);
『拾』 C# 自定義泛型集合
我不知道你為什麼要這樣物汪核使用,不過你可以改成這樣
Cells c=new Cells();
List<Cells> r=new List<Cells>();
r.add(c);
List<List<Cells>> list = new List<List<陵陸Cells>>();
list.add(r);
如果我說的符合你的要求,罩掘就給我分吧。- -