获取空linq语句的属性



当linq语句不包含任何元素时,是否有一种方法可以循环遍历linq语句的下划线结果的属性?

我想创建一个数据表,并添加单个属性作为列,但似乎这只能在linq语句包含项目时完成。请参阅下面我的当前代码

private static void GetProperties<T>(IEnumerable<T> query) 
{
    DataTable dt = new DataTable();
    PropertyInfo[] queryInfo = null;
    foreach (var item in query)
    {
        if (queryInfo == null) 
        {
            queryInfo = item.GetType().GetProperties();
            foreach (var info in queryInfo)
            {
                dt.Columns.Add(info.Name);
            }
        }
        DataRow dr = dt.NewRow();
        foreach (PropertyInfo pi in queryInfo)
        {
            dr[pi.Name] = pi.GetValue(item, null) ?? DBNull.Value;
        }
        dt.Rows.Add(dr);
    }
}

所需代码,或类似代码:

private static void GetProperties<T>(IEnumerable<T> query) 
{
    DataTable dt = new DataTable();
    PropertyInfo[] queryInfo = null;
    queryInfo = query.FirstOrDefault().GetType().GetProperties();
    foreach (var info in queryInfo)
    {
        dt.Columns.Add(info.Name);
    }
    foreach (var item in query)
    {
        DataRow dr = dt.NewRow();
        foreach (PropertyInfo pi in queryInfo)
        {
            dr[pi.Name] = pi.GetValue(item, null) ?? DBNull.Value;
        }
        dt.Rows.Add(dr);
    }
}

我总是希望DataTable包含列,即使linq语句不包含任何项。

我愿意接受任何建议。

谢谢。

怀疑你在找它:

PropertyInfo[] queryInfo = typeof(T).GetProperties();

换句话说,从泛型类型参数中获取属性,而不是从该类型的特定实例中获取属性。

相关内容

  • 没有找到相关文章

最新更新