이 질문은 C#, LINQ 그룹화 및 컬렉션과 관련이 있습니다.어떤 C# 데이터 구조를 사용해야합니까?
현재 그룹화 문제에 대해 작업 중이며 커뮤니티의 의견을 받고 싶습니다. 과거에이 특정 문제가 발생하여 충분한 시간을 가지기 때문에 자신의 데이터 구조를 작성하려고합니다. 세부 사항은 다음과 같습니다.
제조업체와 제품으로 구성되며 데이터 구조가 제조업체별로 그룹화되어 있다고 가정합니다. 많은 제조업체와 많은 제품이 있습니다. 제조업체마다 고유 한 이름과 ID가 있습니다. 제품의 이름은 비슷하지만 고유 ID가 있습니다. 진행 목록은 예제를 나타냅니다.
포드 1 축제 1945 토러스 6413 퓨전 4716, F1 8749,
도요타 2 캄리 1311 프리우스 6415 화관 1117 코마 9471
시보레 3 실버라도 4746, Camero 6473, 볼트 3334, 타호 등 9974
은 ...
내가 표현하기 위해 사용하는 것이 데이터 구조이 될 것
IEnumerable<Manufacturer, ManufacturerID, IEnumerable<Product, ProductID>>
,
하지만 이것은 존재하지 않습니다. 따라서 커뮤니티에 데이터 구조를 권하고 싶습니다. 왜 그런지 물어보고 싶은 제 질문은 무엇입니까?
업데이트 :
나는 익명의 유형을 유지하고 동적 키워드를 피하기 위해 싶습니다. 그래서 데이터 구조가
IEnumerable SomeDataStructure<T, U, V>
같은 것을 할 것입니다 다른 요구 사항은 그 항목을 복제 한 수입니다. 여기에 내가 생각하고 무슨 종류의 :
public class MyDataStructure<T, U, V>
{
// make this like a list, not a dictionary
}
업데이트 :
가 나는 튜플 데이터 구조와 함께 이동하기로 결정했다. 매우 강력하고 쉽게 쿼리 할 수 있습니다. 절차 코드는 제조사 - 차량 관계를 생성하는 방법을 사용하는 방법입니다. 그 결과 고유의 제조업체가 이름별로 주문 된 관련 고유 차량으로 이름순으로 주문한 멋지게 주문 된 데이터 구조가됩니다.
public class ManufacturersVehicles
{
public int ManufacturerID { get; set; }
public string ManufacturerName { get; set; }
public int VehicleID { get; set; }
public string VehicleName { get; set; }
}
// "data" actually comes from the database. I'm just creating a list to use a mock structure to query against.
var data = new List<ManufacturersVehicles>
{
{ ManufacturerID = 1, Manufacturer = "Ford", VehicleID = 1945, VehicleName = "Fiesta" },
{ ManufacturerID = 1, Manufacturer = "Ford", VehicleID = 6413, VehicleName = "Taurus" },
{ ManufacturerID = 1, Manufacturer = "Ford", VehicleID = 4716, VehicleName = "Fusion" },
etc...
};
// Get a collection of unique manufacturers from the data collection and order it by the manufacturer's name.
var manufacturers = data.Select(x => new { ManufacturerID = x.ManufacturerID, ManufacturerName = x.ManufacturerName })
.Distinct()
.OrderBy(x => x.ManufacturerName)
.Select(x => Tuple.Create(x.ManufacturerID, x.ManufacturerName, new Dictionary<int, string>()))
.ToList();
// Add the manufacturer's vehicles to it's associated dictionary collection ordered by vehicle name.
foreach (var manufacturer in manufacturers)
{
// Get the collection of unique vehicles ordered by name.
var vehicles = _alertDetails.Where(x => x.ManufacturerID == manufacturer.Item1)
.Select(x => new { VehicleID = x.VehicleID, VehicleName = x.VehicleName })
.Distinct()
.OrderBy(x => x.VehicleName);
foreach (var vehicle in vehicles)
{
manufacturer.Item3.Add(vehicle.VehicleID, vehicle.VehicleName);
}
}
왜 다시 필요합니까? 왜 익명 유형을 사용하지 않는가? –
데이터는 어떻게 처리됩니까? 제조업체별로 제품 목록을 검색해야합니까? 또는 제품 제조업체를 찾으십니까? 또는 무엇을? – SirPentor
데이터를 사용하여 asp.net에서 treeview 컨트롤을 채 웁니다. 데이터베이스의 데이터는 그룹화없이 되돌아옵니다. 이벤트가 데이터를 필터링 할 때 쉽게 액세스 할 수 있도록 데이터 구조를 쉽게 그룹화하고 싶습니다. – Halcyon