Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
.net LINQ对新手的帮助_.net_Sql_Asp.net Mvc 3_Linq - Fatal编程技术网

.net LINQ对新手的帮助

.net LINQ对新手的帮助,.net,sql,asp.net-mvc-3,linq,.net,Sql,Asp.net Mvc 3,Linq,无法获取此信息,是否有人可以帮助执行此LINQ查询 select col1, (select col2 from tbl2 where tbl2.ID=tbl1.tbl2ID) as [col2] from tbl1 情况是这样的 我想要Jobs表中的所有记录,Jobs有sectorID列,我还想要SectorName。还有CountryID和CityID,我也需要CountryName和CityName。您应该像这样加入这些表: from j in Jobs join c in Co

无法获取此信息,是否有人可以帮助执行此LINQ查询

select col1, 
(select col2 from tbl2 where tbl2.ID=tbl1.tbl2ID) as [col2] 
from tbl1  
情况是这样的


我想要Jobs表中的所有记录,Jobs有sectorID列,我还想要SectorName。还有CountryID和CityID,我也需要CountryName和CityName。

您应该
像这样加入这些表:

from j in Jobs
join c in Countries on j.CountryID equals c.ID
join c2 in Cities on c.CityID equals c2.ID
select new 
{ 
    SectorName = j.SectorName,
    CountryName = c.Name,
    CityName = c2.Name
};
var result=from job in Jobs
           select new {job.jobID, job.jobName, job.Sector.SectorName, job.Country.CountryName, job.City.CityName};

您应该
像这样连接这些表:

from j in Jobs
join c in Countries on j.CountryID equals c.ID
join c2 in Cities on c.CityID equals c2.ID
select new 
{ 
    SectorName = j.SectorName,
    CountryName = c.Name,
    CityName = c2.Name
};
var result=from job in Jobs
           select new {job.jobID, job.jobName, job.Sector.SectorName, job.Country.CountryName, job.City.CityName};

如果关系建立得当,我认为应该是这样的:

from j in Jobs
join c in Countries on j.CountryID equals c.ID
join c2 in Cities on c.CityID equals c2.ID
select new 
{ 
    SectorName = j.SectorName,
    CountryName = c.Name,
    CityName = c2.Name
};
var result=from job in Jobs
           select new {job.jobID, job.jobName, job.Sector.SectorName, job.Country.CountryName, job.City.CityName};

如果关系建立得当,我认为应该是这样的:

from j in Jobs
join c in Countries on j.CountryID equals c.ID
join c2 in Cities on c.CityID equals c2.ID
select new 
{ 
    SectorName = j.SectorName,
    CountryName = c.Name,
    CityName = c2.Name
};
var result=from job in Jobs
           select new {job.jobID, job.jobName, job.Sector.SectorName, job.Country.CountryName, job.City.CityName};

这是我发现的一个很好的例子,我想它可以解释你在寻找什么。绝对需要加入

class Job
{
public int ID { get; set; }
public string Name { get; set; }
public string Title { get; set; }
}

class Sector
{
public int ID { get; set; }
public string SectorName { get; set; }
}

class City
{
public int ID { get; set; }
public string CityName { get; set; }
}

void Main()
{
var jobs = new Job[]
{
    new Job{ID = 5, Name = "Sam", Title="Minion"},
    new Job{ID = 6, Name = "Dave", Title="Overlord"},
    new Job{ID = 7, Name = "Julia", Title="Minion"},
    new Job{ID = 8, Name = "Sue", Title="Minion"}
};

// Example orders.
var sectors = new Sector[]
{
    new Sector{ID = 5, SectorName = "Sector42"}
};

var cities = new City[]
{
    new City{ID = 5, CityName = "TownsVille"}
};

// Join on the ID properties.
var query = from j in jobs
        join s in sectors on j.ID equals s.ID
        join c in cities on j.ID equals c.ID
        select new { j.Name, j.Title, c.CityName, s.SectorName };

// Display joined groups.
foreach (var group in query)
{
    Console.WriteLine("{0} Is a  {1} in {2}, sector {3}", group.Name, group.Title, group.CityName, group.SectorName);
}

}
输出如下所示(来自foreach循环)


我引用了这个网站:

这是我发现的一个很好的例子,我想它解释了你在寻找什么。绝对需要加入

class Job
{
public int ID { get; set; }
public string Name { get; set; }
public string Title { get; set; }
}

class Sector
{
public int ID { get; set; }
public string SectorName { get; set; }
}

class City
{
public int ID { get; set; }
public string CityName { get; set; }
}

void Main()
{
var jobs = new Job[]
{
    new Job{ID = 5, Name = "Sam", Title="Minion"},
    new Job{ID = 6, Name = "Dave", Title="Overlord"},
    new Job{ID = 7, Name = "Julia", Title="Minion"},
    new Job{ID = 8, Name = "Sue", Title="Minion"}
};

// Example orders.
var sectors = new Sector[]
{
    new Sector{ID = 5, SectorName = "Sector42"}
};

var cities = new City[]
{
    new City{ID = 5, CityName = "TownsVille"}
};

// Join on the ID properties.
var query = from j in jobs
        join s in sectors on j.ID equals s.ID
        join c in cities on j.ID equals c.ID
        select new { j.Name, j.Title, c.CityName, s.SectorName };

// Display joined groups.
foreach (var group in query)
{
    Console.WriteLine("{0} Is a  {1} in {2}, sector {3}", group.Name, group.Title, group.CityName, group.SectorName);
}

}
输出如下所示(来自foreach循环)


我引用了这个网站:

你需要做一些加入。在不了解您的结构的情况下,下面的方法可能会奏效

创建一个简单的视图模型以保存您的信息:

public class JobView
{
    public int JobId { get; set; }
    public string JobName { get; set; }
    //Add any other fields you may need here
    public string SectorName { get; set; }
    public string CityName { get; set; }
    public string CountryName { get; set; }
    public string CityName { get; set; }

}
然后根据需要填写一个列表

List<JobView> retVal = (from job in Jobs
                join sector in Sectors on job.SectorId equals sector.Id
                join country in Countries on job.CountryId equals country.Id
                join city in Cities on job.CityId equals city.Id
                select new JobView { 
                                JobId = job.Id,
                                JobName = job.JobName,
                                SectorName = sector.SectorName,
                                CountryName = country.CountryName,
                                CityName = city.CityName }).ToList();
    }
List retVal=(来自作业中的作业
在作业的扇区中加入扇区。扇区Id等于扇区。Id
在工作的国家/地区加入country。CountryId等于country.Id
加入工作城市中的城市。CityId等于city.Id
选择新作业视图{
JobId=job.Id,
JobName=job.JobName,
SectorName=扇区.SectorName,
CountryName=country.CountryName,
CityName=city.CityName});
}

JobView中定义的任何其他字段只需在选择过程中填充即可。

您需要进行一些连接。在不了解您的结构的情况下,下面的方法可能会奏效

创建一个简单的视图模型以保存您的信息:

public class JobView
{
    public int JobId { get; set; }
    public string JobName { get; set; }
    //Add any other fields you may need here
    public string SectorName { get; set; }
    public string CityName { get; set; }
    public string CountryName { get; set; }
    public string CityName { get; set; }

}
然后根据需要填写一个列表

List<JobView> retVal = (from job in Jobs
                join sector in Sectors on job.SectorId equals sector.Id
                join country in Countries on job.CountryId equals country.Id
                join city in Cities on job.CityId equals city.Id
                select new JobView { 
                                JobId = job.Id,
                                JobName = job.JobName,
                                SectorName = sector.SectorName,
                                CountryName = country.CountryName,
                                CityName = city.CityName }).ToList();
    }
List retVal=(来自作业中的作业
在作业的扇区中加入扇区。扇区Id等于扇区。Id
在工作的国家/地区加入country。CountryId等于country.Id
加入工作城市中的城市。CityId等于city.Id
选择新作业视图{
JobId=job.Id,
JobName=job.JobName,
SectorName=扇区.SectorName,
CountryName=country.CountryName,
CityName=city.CityName});
}


JobView中定义的任何其他字段只需在选择过程中填充即可。

您的数据上下文是什么样子的?Jobs表和其他表(扇区?)的数据模式是什么样的?结构很简单。Jobs表有几个字段和SectorID(int),sections表有SectorName(nvarchar)和ID(int,primarykey),Cities表有CityName(nvarchar)和ID(int,primarykey),Countries表有CountryName(nvarchar)和ID(int,primarykey)我根据你解释的三张表格更新了我的答案。谢谢@davidisawesome,但@J Torres的答案仍然适合我的需要。祝你下次好运。我感谢大家在这里的努力。有一个摇摆的时间在前面。你的数据上下文看起来像什么?Jobs表和其他表(扇区?)的数据模式是什么样的?结构很简单。Jobs表有几个字段和SectorID(int),sections表有SectorName(nvarchar)和ID(int,primarykey),Cities表有CityName(nvarchar)和ID(int,primarykey),Countries表有CountryName(nvarchar)和ID(int,primarykey)我根据你解释的三张表格更新了我的答案。谢谢@davidisawesome,但@J Torres的答案仍然适合我的需要。祝你下次好运。我感谢大家在这里的努力。我还需要Jobs中的列和你添加的3列。@OjalSuthar,你可以选择你想选择的内容,正如我向你展示的,
j
Jobs
表的别名。使用它来选择匿名类型
选择新的{j.Whatyouwanttoselect,j.anothercolumn,…}
。我还需要Jobs中的列和您添加的3列。@OjalSuthar,您可以选择您想要选择的内容,正如我向您展示的,
j
Jobs
表的别名。使用它在匿名类型
选择新的{j.Whatyouwanttoselect,j.anothercolumn,…}中选择您想要的列
。结构很简单。Jobs表有几个字段和SectorID(int),sections表有SectorName(nvarchar)和ID(int,primarykey),Cities表有CityName(nvarchar)和ID(int,primarykey),Countries表有CountryName(nvarchar)和ID(int,primarykey),基于您收到的大量答案,您应该已经走得很好了。如果您需要一个更优雅的ORM解决方案,您可能需要扩展您的问题。基于您的问题,我建议使用某种形式的ViewModel,它包含您所需的所有列,并按照上面的建议创建一个实例。我必须告诉您,这是一个完美的解决方案。它帮助我克服了视图中的错误
抛出了类型为Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'dynamic{Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
的Microsoft.CSharp.RuntimeBinder.RuntimeBinderException异常。我很高兴这对您有所帮助。祝您好运!结构简单。Jobs表只有很少的字段和SectorID(int),SectorName表有SectorName(nvarchar)和ID(int,primarykey),Cities表有CityName(nvarchar)和ID(int,primarykey),Countries表有CountryName(nvarchar)和ID(int,primarykey),基于您收到的大量答案,您应该已经准备好了。如果您需要一个更优雅的ORM解决方案,您可能需要扩展您的解决方案