我想查询一个对象数组" sortedData",其中每个对象有两个值(ItemId,Sort),用于特定的ItemId并设置'排序'值。如下所示,但这不是正确的linq语法。
var sortedData = db.Fetch<object>("SELECT ItemId, Sort FROM CollectionItems WHERE CollectionId = @0", collectionId);
dataWithSort = db.Fetch<OrganizationForExportWithSort>(TpShared.DAL.StoredProcedures.GetOrganizationsForTargetListUI(clientId, organizationIdList));
foreach(OrganizationForExportWithSort export in dataWithSort)
{
export.Sort = sortedData.Select("Sort").Where(sortedData.ItemId == export.Id);
}
答案 0 :(得分:0)
据我了解,您需要来自与该特定ID匹配的项的Sort属性。在这种情况下,您所写的内容存在一些问题:
试试这个:
foreach(OrganizationForExportWithSort export in dataWithSort)
{
export.Sort = sortedData.FirstOrDefault(data => data.ItemId == export.Id)?.Sort;
}
&#34;?&#34;是一个新的C#功能,如果(并且仅当)查询成功查找具有该ID的项目时,将尝试调用.Sort。如果它没有,则只返回null。
答案 1 :(得分:0)
您是否尝试过Linq排序?
var sortedData = db.Fetch<object>("SELECT ItemId, Sort FROM CollectionItems WHERE CollectionId = @0", collectionId);
dataWithSort = db.Fetch<OrganizationForExportWithSort>(TpShared.DAL.StoredProcedures.GetOrganizationsForTargetListUI(clientId, organizationIdList));
// create a list ordered by fields
var sorted = dataWithSort.OrderBy(o => o.SomeField).ThenBy(o => o.OtherField);
lambda中的o代表对象......
我会在人们的合唱中加入我的声音,说要阅读一些很好的linq教程。 Start Here