두 개의 테이블 A와 B는 완전히 독립적이지만 모두 time
열을 가지고 있습니다.이 열은 DateTime
입니다.LINQ - 두 테이블에서 n 개의 레코드를 가져 오는 방법은 무엇입니까?
하나의 컬렉션에서 두 테이블의 가장 최근 10 개 레코드 (time
필드 기반)를 얻으려면 어떤 간단한 LINQ 쿼리를 작성해야합니까? 예를 들어이 쿼리는 A 레코드 7 개 레코드와 B - 10 레코드 레코드 3 개를 모두 반환 할 수 있습니다.
두 개의 테이블 A와 B는 완전히 독립적이지만 모두 time
열을 가지고 있습니다.이 열은 DateTime
입니다.LINQ - 두 테이블에서 n 개의 레코드를 가져 오는 방법은 무엇입니까?
하나의 컬렉션에서 두 테이블의 가장 최근 10 개 레코드 (time
필드 기반)를 얻으려면 어떤 간단한 LINQ 쿼리를 작성해야합니까? 예를 들어이 쿼리는 A 레코드 7 개 레코드와 B - 10 레코드 레코드 3 개를 모두 반환 할 수 있습니다.
var _result = tableA
.Select(x => x.time)
.Union(tableB.Select(y => y.time))
.OrderByDescending(z => z.time)
.Take(10);
SOURCE
'z.time'을 인식 할 수 없습니다 ...? 또한 이것은'time' 컬럼만을 반환하는 것으로 보이는데, 결과적으로'_result'는'IQueryable
방법이 'VAR의 _result = TABLEA \t \t \t .Union (TableB의) \t \t \t .OrderByDescending (Z => z.time) \t \t \t .Take (10)에 대해,'? –
'Union'은'tableA'을 인수로 기대하기 때문에 작동하지 않습니다. –
나는 당신에게 X-컴 예를 들어주지. 테이블에 x-com 기반으로 출하 할 데이터를 저장하게하십시오. 표 A 저장소를 모집하고 표 B 저장소 항목을 보자. 당신은 날짜별로 정렬의 기준이 발송되었습니다 신병 및 항목의 목록을 표시하려면 :
또한 출력 레코드에 대한 클래스를 생성 할 수 있습니다//soldiers
public class RowA
{
public long Id {get;set;}
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime Date { get; set; }
}
//items
public class RowB
{
public long Id {get;set;}
public string ItemName { get; set; }
public decimal Quantity { get; set; }
public DateTime Date { get; set; }
}
List<RowA> TableA;
List<RowB> TableB;
public Form1()
{
InitializeComponent();
PrepareTestData();
int uniqueId = 0;
var result = (from a in TableA
//Map soldiers to anonymous
select new
{
UniqueId = uniqueId++,
InnerId = a.Id,
Name = a.FirstName + " " + a.LastName,
Date = a.Date,
})
.Union(from b in TableB
select new
{
UniqueId = uniqueId++,
InnerId = b.Id,
Name = b.ItemName,
Date = b.Date,
}).OrderByDescending(x => x.Date).ToList();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = result;
}
void PrepareTestData()
{
TableA = new List<RowA>();
for (int i = 0; i < 7; ++i)
TableA.Add(new RowA
{
Id = i + 1,
FirstName = "Name" + i,
LastName = "Surname" + i,
Date = DateTime.Now.AddDays(-i)
});
TableB = new List<RowB>();
for (int j = 0; j < 4; ++j)
TableB.Add(new RowB
{
Id = j + 1,
ItemName = "Laser pistol",
Quantity = 7,
Date = DateTime.Now.AddDays(-j)
});
}
:
public Form1()
{
InitializeComponent();
PrepareTestData();
int uniqueId = 0;
var result = (from a in TableA
//Map soldiers to ShipmentReportItem
select new ShipmentReportItem
{
UniqueId = uniqueId++,
InnerId = a.Id,
Name = a.FirstName + " " + a.LastName,
Date = a.Date,
})
.Union(from b in TableB
select new ShipmentReportItem
{
UniqueId = uniqueId++,
InnerId = b.Id,
Name = b.ItemName,
Date = b.Date,
}).OrderByDescending(x => x.Date).ToList();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = result;
}
한 결과 클래스에 대한 유용한 것을 ASP.NET 검사 gridview 일부 검사 또는 modyfing 레코드가 필요한 경우. 그런 다음 유형을 정의 할 때 데이터 소스 항목에 쉽게 액세스 할 수 있습니다. 그렇지 않으면 데이터 항목 유형을 가져와 속성 등을 확인해야합니다. 특정 속성에서 값을 가져옵니다.
테이블 B가 사람 (같은 열을 가짐)을 저장하면 행 구조체가 동일하므로 매핑이 필요하지 않습니다.
테이블 A의 테이블 B에 가입해야합니다.이 페이지를보십시오 : http://www.dotnetperls.com/join. LINQ로 조인을 수행하는 방법을 설명합니다. – Carsten
테이블 A와 B에 "시간"열과 같은 다른 열이 있습니까? 얻으려는 쿼리에 대한 출력 레코드를 지정하지 않았기 때문입니다. 두 테이블이 완전히 다른 경우 익명 출력 레코드를 만들 수 있습니다. A와 B가 같은 열을 가지고 있다면 Union을 할 수 있습니다. – pawciu
두 테이블 *은 데이터베이스 디자인 방식에 따라 열을 공유 할 수 있습니다. 무슨 뜻인지 예를 보여줄 수 있습니까? –