我正在使用一段代码,它获取合同列表并将它们添加到字典中……
Dictionary<int, decimal> contractDictionary = new Dictionary<int, decimal>();然后填充...
sales是一个传递到方法中的变量,数据库中有一个sales表(SalesTbl),该变量的类型为SalesTbl...
public void UpdateSales(SalesTbl sales)
{
...
if (!contractDictionary.ContainsKey(sales.ContractId))
{
contractDictionary.Add(sales.ContractId, 0);
}
...
}然后,代码遍历合同字典以创建电子邮件正文。
foreach (var item in contractDictionary)
{
emailBody += string.Format("Contract {0} total sales cost: {1}", item.Key, item.Value);
}我的问题是,这是将合同id和销售成本一起显示在电子邮件中,收到电子邮件的用户将无法理解合同id,我需要将其替换为合同名称。这在相同的方法中也是可用的(forms具有contract名称,也具有contractid)。
List<ContractForms> forms = GetFormsForSalesUpdate(update);有没有一种方法可以很容易地将这两种方式结合在一起,或者通过某种方式从'forms‘中获取合同名称,以显示它来代替合同id?
我希望这一切都说得通,
提前感谢:)
发布于 2016-08-16 17:29:56
这是使用from-where-select的一种方法:
var result = from f in forms
from d in contractDictionary
where f.contractid == d.Key
select string.Format("Contract {0} total sales cost: {1}", f.contractname, d.Value);
emailbody = string.Join(Environment.NewLine, result);发布于 2016-08-16 16:59:43
List<ContractForms> forms = GetFormsForSalesUpdate(update);
foreach (var item in contractDictionary)
{
var form = forms.Where(f => f.ContractID == item.Key).FirstOrDefault();
emailBody += string.Format("Contract {0} total sales cost: {1}", form.ContractName, item.Value);
}发布于 2016-08-16 17:00:18
您可以使用一个字典,关键字为ContractID,值为Tuple<decimal, string>,其中string是contract的名称。要添加到Dictionary<int, Tuple<decimal, string>>,请使用以下命令:contractDictionary.Add(sales.ContractId, new Tuple<decimal, string>(0, sales.ContractName));。或者只使用对象SalesTbl作为值。
https://stackoverflow.com/questions/38970486
复制相似问题