Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 如何在此查询中使用(动态)null概念_Linq_Asp.net 3.5 - Fatal编程技术网

Linq 如何在此查询中使用(动态)null概念

Linq 如何在此查询中使用(动态)null概念,linq,asp.net-3.5,Linq,Asp.net 3.5,我想用不同的条件绑定网格视图,这里显示我使用(动态)null概念来声明查询,但在剩余部分的末尾,我无法获取与查询关联的字段 我把代码放在这里: public void FillGrid(string GroupByText, string ColumnName, string SearchText) { using (DataClassesDataContext db = new DataClassesDataContext()) {

我想用不同的条件绑定网格视图,这里显示我使用(动态)null概念来声明查询,但在剩余部分的末尾,我无法获取与查询关联的字段

我把代码放在这里:

 public void FillGrid(string GroupByText, string ColumnName, string SearchText)
    {
        using (DataClassesDataContext db = new DataClassesDataContext())
        {
            var query = (dynamic)null;
            switch (GroupByText)
            {
                case "Enquiry":
                    query = db.Enquiries.Where(i => i.enttype_id.Equals("1")).OrderByDescending(i => i.Created_date).Select(i => new
                    {
                        Ref_no = i.Ref_no,
                        Name = db.Parties.Where(p => p.Id.Equals(i.party_id)).Select(p => p.Name).SingleOrDefault(),
                        StatusName = db.Status.Where(s => s.Id.Equals(i.status_id)).Select(s => s.StatusName).SingleOrDefault(),
                        CategoryName = db.Categories.Where(c => c.Id.Equals(i.category_id)).Select(c => c.category_name).SingleOrDefault(),
                        IsUregent = i.IsUregent,
                        Created_date = i.Created_date
                    }).FilterForColumn(ColumnName,SearchText).ToList();
                    break;
                case "Visit":
                    query = db.Enquiries.Where(i => i.enttype_id.Equals("2")).OrderByDescending(i => i.Created_date).Select(i => new
                     {
                         Ref_no = i.Ref_no,
                         Name = db.Parties.Where(p => p.Id.Equals(i.party_id)).Select(p => p.Name).SingleOrDefault(),
                         StatusName = db.Status.Where(s => s.Id.Equals(i.status_id)).Select(s => s.StatusName).SingleOrDefault(),
                         CategoryName = db.Categories.Where(c => c.Id.Equals(i.category_id)).Select(c => c.category_name).SingleOrDefault(),
                         IsUregent = i.IsUregent,
                         Created_date = i.Created_date
                     }).FilterForColumn(ColumnName,SearchText).ToList();
                    break;
                default:
                    query = db.Enquiries.OrderByDescending(i => i.Created_date).Select(i => new
                    {
                        Ref_no = i.Ref_no,
                        Name = db.Parties.Where(p => p.Id.Equals(i.party_id)).Select(p => p.Name).SingleOrDefault(),
                        StatusName = db.Status.Where(s => s.Id.Equals(i.status_id)).Select(s => s.StatusName).SingleOrDefault(),
                        CategoryName = db.Categories.Where(c => c.Id.Equals(i.category_id)).Select(c => c.category_name).SingleOrDefault(),
                        IsUregent = i.IsUregent,
                        Created_date = i.Created_date
                    }).FilterForColumn(ColumnName, SearchText).ToList();
                    break;
            }
            int count = 0;
            DataSet myDataSet = new DataSet();
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("Ref_no", typeof(string)));
            dt.Columns.Add(new DataColumn("Name", typeof(string)));
            dt.Columns.Add(new DataColumn("StatusName", typeof(int)));
            dt.Columns.Add(new DataColumn("CategoryName", typeof(string)));
            dt.Columns.Add(new DataColumn("IsUregent", typeof(bool)));
            dt.Columns.Add(new DataColumn("Created_date", typeof(DateTime)));
            foreach (var item in query)
            {
                if (item != null)
                {
                    DataRow dr = dt.NewRow();
                    dr["Ref_no"] = item.//not founding field that
                }
            }
        }
    }

.FilterForColumn(ColumnName,SearchText)
的返回类型是什么? 如果它只进行过滤,而不更改
数据类型
,我认为您可以使用以下方法:

var query = Enumerable.Repeat(new
        {
            Ref_no = string.Empty,
            Name = string.Empty,
            StatusName = default(int),
            CategoryName = string.Empty,
            IsUregent = default(bool),
            Created_date = default(DateTime)
        }, 0)
        .ToList();
与此相反:

var query = (dynamic)null;

也许这可以解决你的问题。那是什么??不管怎样,它都能解决我的问题。在这里,我将此技术用于其他表单,但没有发现类似的问题编译时将知道
查询
类型
,并且您无法访问其成员,也可以像这样
object query=null
如果您定义了
query
,您同样无法访问其成员,因此您需要确切的
query
类型才能访问其成员,因此您需要为查询创建一个类型,类似于
List query=new List()
,或者如果您使用
匿名
类型,则可以使用此技巧