C# 从元组到ICollection的映射
好的,我从mySql获取数据,它作为只读集合返回。现在我必须从这个映射到我的C# 从元组到ICollection的映射,c#,mysql,tuples,icollection,C#,Mysql,Tuples,Icollection,好的,我从mySql获取数据,它作为只读集合返回。现在我必须从这个映射到我的Audit和AuditItem类。审核部分的工作方式如下: return audits.Select((AuditMapper.Map)).ToReadOnlyCollection(); 在auditmapper中会发生这种情况 public static Audit Map(Tuple<DbAudit, DbAuditItem> source) { if (source == null) re
Audit
和AuditItem
类。审核
部分的工作方式如下:
return audits.Select((AuditMapper.Map)).ToReadOnlyCollection();
在auditmapper中会发生这种情况
public static Audit Map(Tuple<DbAudit, DbAuditItem> source)
{
if (source == null)
return null;
return new Audit(
null,
(AuditKind) source.Item1.AuditKindId,
source.Item1.DateCreated,
null,
source.Item1.ContainerItemId,
source.Item1.UserId,
Item2.Select(AuditItemMapper.Map).ToReadOnlyCollection()
);
}
但我知道我的方式是行不通的。我需要以某种方式获取元组中每个不同的Item1,并将每个对应的Item2放入一个集合,该集合将进入审计项…我最终以一种迂回的方式完成了这项工作,如下所示:
Audit audit = null;
List<AuditItem> auditItemsList = new List<AuditItem>();
List<Audit> totalAudits = new List<Audit>();
ulong thisId = 0;
foreach (Tuple<DbAudit, DbAuditItem> tuple in audits)
{
if (tuple.Item1.Id == thisId)
{
auditItemsList.Add(AuditItemMapper.Map(tuple.Item2));
}
else
{
if (thisId != 0 && audit != null)
{
totalAudits.Add(new Audit(audit.ApplicationToken, audit.AuditKind, audit.DateCreated, audit.ContainerName, audit.ContainerItemId, audit.UserId, auditItemsList));
auditItemsList.Clear();
}
thisId = tuple.Item1.Id;
audit = (AuditMapper.Map(tuple.Item1));
auditItemsList.Add(AuditItemMapper.Map(tuple.Item2));
}
}
Audit Audit=null;
List auditItemsList=新列表();
List totalAudits=新列表();
ulong thisId=0;
foreach(审计中的元组)
{
if(tuple.Item1.Id==thisId)
{
添加(AuditItemMapper.Map(tuple.Item2));
}
其他的
{
if(thisId!=0&&audit!=null)
{
添加(新审计(Audit.applicationken、Audit.AuditKind、Audit.DateCreated、Audit.ContainerName、Audit.ContainerItemId、Audit.UserId、auditItemsList));
auditemslist.Clear();
}
thisId=tuple.Item1.Id;
audit=(AuditMapper.Map(tuple.Item1));
添加(AuditItemMapper.Map(tuple.Item2));
}
}
什么叫“Item2.Select不工作”?编译错误?不是预期的结果?例外?42?您是否尝试过source.Item2
?此外,元组中有一个AuditItem,但将它们视为一个集合。我们需要更多关于两个类关系性质的信息,请发布审计和审计项构造函数代码。
public AuditItem(string name, string data, string oldData)
{
m_name = name;
m_data = data;
m_oldData = oldData;
}
Audit audit = null;
List<AuditItem> auditItemsList = new List<AuditItem>();
List<Audit> totalAudits = new List<Audit>();
ulong thisId = 0;
foreach (Tuple<DbAudit, DbAuditItem> tuple in audits)
{
if (tuple.Item1.Id == thisId)
{
auditItemsList.Add(AuditItemMapper.Map(tuple.Item2));
}
else
{
if (thisId != 0 && audit != null)
{
totalAudits.Add(new Audit(audit.ApplicationToken, audit.AuditKind, audit.DateCreated, audit.ContainerName, audit.ContainerItemId, audit.UserId, auditItemsList));
auditItemsList.Clear();
}
thisId = tuple.Item1.Id;
audit = (AuditMapper.Map(tuple.Item1));
auditItemsList.Add(AuditItemMapper.Map(tuple.Item2));
}
}