我的程序应该从旧版平面文件中读取和处理数据。
我将数据读入private ICollection<transaction> transactions;
public class transaction
{
public int transactionNum;
public DateTime transactionDate;
public int orderNum;
public string customerName;
public Decimal amount;
}
如何为此DataSource
创建ICollection<T>
(或对其进行LINQ查询),以便DataBind
可以{{1}}多个控制值?
注意:我的LINQ知识很少。过去,我可以将数据库表拖到我的应用程序中。
答案 0 :(得分:1)
来自你的评论:
在ASP.NET表单上,我有一个名为customerCheckL的CheckBoxList。上 加载数据文件时,代码应填充customerCheckL.Items 使用不同客户名称列表。我怎么做? customerCheckL.DataSourceID = ???
这更有意义。您可以实现一个EqulityComparer<transactions>
类,按客户进行比较:
public class TransactionCustomerComparer : IEqualityComparer<transaction>
{
public bool Equals(transaction x, transaction y)
{
if (x == null || y == null) return false;
return x.customerName == y.customerName;
}
public int GetHashCode(transaction obj)
{
if (obj == null) return int.MinValue;
return obj.customerName.GetHashCode();
}
}
(请注意,您可以在允许传递自定义比较器的所有Enumerable
方法中使用此方法)
然后,您可以使用Distinct
获取唯一列表。您只需将DataSource
,DataTextField
和DataValueField
以及DataBind
设置为CheckBoxList
。
var customerComparer = new TransactionCustomerComparer();
customerCheckL.DataSource = transactions.Distinct(customerComparer);
customerCheckL.DataTextField = "customerName";
customerCheckL.DataValueField = "transactionNum";
customerCheckL.DataBind();