C# Usercontrol从多个LINQ表中显示字段

C# Usercontrol从多个LINQ表中显示字段,c#,linq,linq-to-sql,user-controls,C#,Linq,Linq To Sql,User Controls,我有许多具有相同字段的LINQ到SQL表(CreatedDate和CreatedUser)。 如果数据以IQueryable或IEnumerable的形式传入,我希望usercontrol显示这些字段中的值 例如: public void UpdateStatus<T>(IQueryable<T> data) { DateTime? theDate = data.Single().CreatedDate; // doesn't work string

我有许多具有相同字段的LINQ到SQL表(
CreatedDate
CreatedUser
)。 如果数据以
IQueryable
IEnumerable
的形式传入,我希望usercontrol显示这些字段中的值

例如:

public void UpdateStatus<T>(IQueryable<T> data)
{
    DateTime? theDate = data.Single().CreatedDate;  // doesn't work 
    string theUser = data.Single().CreatedUser;
}
public void UpdateStatus(IQueryable数据)
{
DateTime?theDate=data.Single().CreatedDate;//不起作用
字符串theUser=data.Single().CreatedUser;
}

为用户控件中所需的属性定义一个接口,然后将泛型方法限制为实现该接口的类型:

interface IStatusInfo {
    DateTime? CreatedDate { get; }
    string CreatedUser { get; }
}

public void UpdateStatus<T>(IQueryable<T> data) where T : IStatusInfo {
    T item = data.Single();
    DateTime? theDate = item.CreatedDate;
    string theUser = item.CreatedUser;
}
接口信息{
日期时间?创建日期{get;}
字符串CreatedUser{get;}
}
public void UpdateStatus(IQueryable数据),其中T:IStatusInfo{
T item=data.Single();
DateTime?theDate=item.CreatedDate;
字符串theUser=item.CreatedUser;
}
或者,完全删除通用位:

public void UpdateStatus(IQueryable<IStatusInfo> data) {
    IStatusInfo item = data.Single();
    DateTime? theDate = item.CreatedDate;
    string theUser = item.CreatedUser;
}
public void UpdateStatus(IQueryable数据){
IStatusInfo项=data.Single();
DateTime?theDate=item.CreatedDate;
字符串theUser=item.CreatedUser;
}