DataBind to ICollection<T>

本文关键字:gt to lt DataBind ICollection | 更新日期: 2023-09-27 17:56:05

我的程序应该从旧版平面文件中读取和处理数据。

我将数据读入private ICollection<transaction> transactions;

public class transaction
{
    public int transactionNum;
    public DateTime transactionDate;
    public int orderNum;
    public string customerName;
    public Decimal amount;
}

如何创建此ICollection<T>DataSource(或其 LINQ 查询),以便可以向其DataBind多个控件值?

注意:我对 LINQ 的了解很少。 过去,我只需将数据库表拖到我的应用程序中即可。

DataBind to ICollection<T>

从您的评论中:

在 ASP.NET 窗体上,我有一个名为 customerCheckL 的复选框列表。后 加载数据文件时,代码应填充 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获取唯一列表。您只需要设置DataSourceDataTextFieldDataValueFieldDataBind CheckBoxList即可。

var customerComparer = new TransactionCustomerComparer();
customerCheckL.DataSource = transactions.Distinct(customerComparer);
customerCheckL.DataTextField = "customerName";
customerCheckL.DataValueField = "transactionNum";
customerCheckL.DataBind();