C# 如何对对象中的对象值列表进行排序
这是我用来获取具有特定id的每个项目的项目和项目详细信息的查询C# 如何对对象中的对象值列表进行排序,c#,entity-framework,linq-to-entities,C#,Entity Framework,Linq To Entities,这是我用来获取具有特定id的每个项目的项目和项目详细信息的查询 public class ItemModel { public int ItemSeq{get;set} public string ItemName{get;set;} public double? Amount{get;set;} } public class SampleModel { public string Id{ get; set; } public string Code{ get
public class ItemModel
{
public int ItemSeq{get;set}
public string ItemName{get;set;}
public double? Amount{get;set;}
}
public class SampleModel
{
public string Id{ get; set; }
public string Code{ get; set; }
public List<ItemModel> Items{ get; set; }
}
public List<SampleModel> GetItems(string id)
{
var items= _context.ItemTable.Where(t => t.Id== id).ToList<SampleModel>();
return list;
}
ItemDetailTable
Id ItemSeq ItemName Amount
1 1 ABC1 200
1 2 ABC2 129
1 3 ABC3 549
2 1 DEF1 265
2 2 DEf2 970
我想要的是当Id
的值为1时,返回值为
Id: 1
Code: Code 1
Items:[
0:{
ItemSeq: 2
ItemName: ABC2
Amount: 129
}
1:{
ItemSeq: 1
ItemName: ABC1
Amount: 200
},
1:{
ItemSeq: 3
ItemName: ABC3
Amount: 549
}
]
通过将
id
参数传递给GetItems
方法,您需要返回ItemModel
的排序列表
public List<ItemModel> GetItems(string id)
{
var items = _context.SampleTable.Where(t => t.Id == id).SelectMany(x => x.Items).Where(p => p.Amount != null).OrderBy(x => x.Amount).ToList();
return items.ToList();
}
编辑2:
public ItemTable GetItems(string id)
{
var result = (from i in _context.ItemTable
where i.Id == id
let sorting = i.Items.Where(x => x.Id == id).Where(x => x.Amount != null).OrderBy(x => x.Amount).ToList()
select new ItemTable
{
Id = i.Id,
Code = i.Code,
Items = sorting
}).FirstOrDefault(); //Or => SingleOrDefault
return result;
}
通过将
id
参数传递给GetItems
方法,您需要返回ItemModel
的排序列表
public List<ItemModel> GetItems(string id)
{
var items = _context.SampleTable.Where(t => t.Id == id).SelectMany(x => x.Items).Where(p => p.Amount != null).OrderBy(x => x.Amount).ToList();
return items.ToList();
}
编辑2:
public ItemTable GetItems(string id)
{
var result = (from i in _context.ItemTable
where i.Id == id
let sorting = i.Items.Where(x => x.Id == id).Where(x => x.Amount != null).OrderBy(x => x.Amount).ToList()
select new ItemTable
{
Id = i.Id,
Code = i.Code,
Items = sorting
}).FirstOrDefault(); //Or => SingleOrDefault
return result;
}
这里的“项目详情”是什么?根据
ItemModel
public double中的金额值?Amount{get;set;}
Amount是SampleModel中嵌套集合的属性。是否要按其嵌套集合中的最大数量订购SampleModel?按总数算?请展示一些示例数据和所需输出,也请展示您尝试过的内容already@hana_wujira,上次编辑问题中ItemModel
和SampleModel
的角色后。请编辑到问题?@GiladGreen我已经更新了问题这里的“项目详细信息”是什么?通过ItemModel
public double中的金额值?Amount{get;set;}
Amount是SampleModel中嵌套集合的属性。是否要按其嵌套集合中的最大数量订购SampleModel?按总数算?请展示一些示例数据和所需输出,也请展示您尝试过的内容already@hana_wujira,上次编辑问题中ItemModel
和SampleModel
的角色后。请编辑问题?@GiladGreen我已经更新了问题,非常感谢你的帮助。但我想知道是否还有其他方法不包括进行两次查询和合并值?查看编辑2:答案中的部分:)非常感谢,它很有效。但我想知道是否还有其他方法不包括进行两次查询和合并值?查看编辑2:答案中的部分:)