1

これを取得できません。誰かがこの LINQ クエリを手伝ってくれますか?

select col1, 
(select col2 from tbl2 where tbl2.ID=tbl1.tbl2ID) as [col2] 
from tbl1  

シナリオはこんな感じ

Jobs テーブルのすべてのレコードが必要です。Jobs には、sectorID 列があり、SectorName も必要です。また、CountryID と CityID があり、CountryName と CityName も必要です。

4

4 に答える 4

1

関係が適切に設定されている場合、次のようになるはずです。

var result=from job in Jobs
           select new {job.jobID, job.jobName, job.Sector.SectorName, job.Country.CountryName, job.City.CityName};
于 2012-07-03T14:24:17.053 に答える
0

JOINこれらのテーブルは次のようにする必要があります。

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
};
于 2012-07-03T14:19:48.337 に答える
0

これが私が見つけた良いサンプルで、あなたが探しているものを説明していると思います。間違いなくJOINが必要です。

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ループから)

Sam Is a  Minion in TownsVille, sector Sector42

私はこのサイトを参照しました:http://www.dotnetperls.com/join

于 2012-07-03T14:25:28.317 に答える
0

いくつかの結合を行う必要があります。あなたの構造がわからない場合、次のようなものがうまくいくかもしれません。

情報を保持する単純なビュー モデルを作成します。

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();
    }

JobView で定義された追加のフィールドは、選択中に入力する必要があります。

于 2012-07-03T14:28:56.927 に答える