Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
C# 如何使用Entity Framework 6从数据库中获取数据_C#_Entity Framework_Entity Framework 4_Linq To Entities - Fatal编程技术网

C# 如何使用Entity Framework 6从数据库中获取数据

C# 如何使用Entity Framework 6从数据库中获取数据,c#,entity-framework,entity-framework-4,linq-to-entities,C#,Entity Framework,Entity Framework 4,Linq To Entities,我已经构建了一个查询来返回两个表中的数据,在这两个表中,它们通过内部联接进行联接。尽管如此,由于查询看起来不错,当我尝试从查询中访问所选字段名时,会收到错误消息。如何在此查询中使用.SingleOrDefault()函数。有人能帮我怎么做吗 private void FindByPincode(int iPincode) { using (ABCEntities ctx = new ABCEntities()) { var quer

我已经构建了一个查询来返回两个表中的数据,在这两个表中,它们通过内部联接进行联接。尽管如此,由于查询看起来不错,当我尝试从查询中访问所选字段名时,会收到错误消息。如何在此查询中使用.SingleOrDefault()函数。有人能帮我怎么做吗

private void FindByPincode(int iPincode)
    {
        using (ABCEntities ctx = new ABCEntities())
        {
            var query = from c in ctx.Cities
                        join s in ctx.States
                        on c.StateId equals s.StateId
                        where c.Pincode == iPincode
                        select new {
                                s.StateName, 
                                c.CityName, 
                                c.Area};

            // var query = ctx.Cities.AsNoTracking().SingleOrDefault(_city => _city.Pincode == iPincode);

            if (query != null)
            {
                cboState.SelectedItem.Text =query.State;        //Getting error "Could not found"
                cboCity.SelectedItem.Text = query.CityName;     //Getting error "Could not found"
                txtArea.Text = query.Area;                        //Getting error "Could not found"

            }

        }
    }

提前感谢。

可能是您正在选择一个名为StateName的字段,然后访问State

 cboState.SelectedItem.Text =query.State;    



cboState.SelectedItem.Text =query.StateName;    
请提供有关错误和代码类结构的更多详细信息尝试以下操作:

using (ABCEntities ctx = new ABCEntities())
    {
        var query = (from c in ctx.Cities
                    join s in ctx.States
                    on c.StateId equals s.StateId
                    where c.Pincode == iPincode
                    select new {
                            s.StateName, 
                            c.CityName, 
                            c.Area}).FirstOrDefault();

        if (query != null)
        {
            cboState.SelectedItem.Text =query.State;        
            cboCity.SelectedItem.Text = query.CityName;    
            txtArea.Text = query.Area;                        
        }
    }

以下是类似情况对我的影响:

using (ABCEntities ctx = new ABCEntities())
{
        var query = (from c in ctx.Cities
                    join s in ctx.States
                    on c.StateId equals s.StateId
                    where c.Pincode == iPincode
                    select new {
                            s.StateName, 
                            c.CityName, 
                            c.Area}).Single();

        if (query.Any())
        {
            cboState.SelectedItem.Text =query.State;
            cboCity.SelectedItem.Text = query.CityName;
            txtArea.Text = query.Area;
        }
}

注意,我在上面使用了query.Any(),这是因为query!=null将始终返回true。但是,any()检查查询是否返回了1条或多条记录,如果是,any()返回true,如果查询没有返回记录,any()返回false。

错误是“'System.Linq.IQueryable'不包含'StateName'的定义,并且找不到接受'System.Linq.IQueryable'类型的第一个参数的扩展方法'StateName'(是否缺少using指令或程序集引用?)“如果查询返回default if not single(),该怎么办?然后它将变成错误/异常。@SorangwalaAbbasali您可以在这种情况下使用SingleOrDefault()。我看到了您的代码,但不明白为什么同时使用.First()和SingleOrDefault()来获取数据……
.First().SingleOrDefault();
请告诉我原因好吗?