c# - 通过 Linq 表达式的 foreach 显示所有项目
问题描述
我正在尝试制作价目表、数量、产品名称,但我无法向这些项目展示有人知道我做错了什么?谢谢你。
float precototal = 0
var ClienteCompraQuantidade =
from c in basedados.DetalheCompra
where c.ComprasNrCompra == p.NrCompra
select c.Quantidade;
var ClienteCompraPreco =
from c in basedados.DetalheCompra
join f in basedados.Produto
on c.ProdutosCodProduto equals f.CodProduto
where c.ComprasNrCompra == p.NrCompra && c.ProdutosCodProduto == f.CodProduto
select f.Designacao;
var ClienteCompraDesignacao=
from c in basedados.DetalheCompra
join f in basedados.Produto
on c.ProdutosCodProduto equals f.CodProduto
where c.ComprasNrCompra == p.NrCompra && c.ProdutosCodProduto == f.CodProduto
select f.Preco;
StreamWriter ficheiro = new StreamWriter(@"C:Recibo.txt", false, Encoding.Default);
ficheiro.WriteLine("Itens comprados:");
foreach (var i in ClienteCompraQuantidade)
{
int preco = Convert.ToInt32(ClienteCompraPreco) * Convert.ToInt32(ClienteCompraQuantidade);
precototal = precototal + preco;
ficheiro.WriteLine("" +ClienteCompraQuantidade. + "|" + ClienteCompraDesignacao. + " |" + preco);
}
解决方案
您当前正在写出参与者的LIST(对象),而不是每个单独的参与者。你应该:
ficheiro.WriteLine(i);
在你的foreach
编辑:
因此,您现在的问题与最初的问题大不相同……但是,您仍然犯了同样的错误。在你的foreach
你尝试做这样的事情:
Convert.ToInt32(ClienteCompraPreco)
请注意,这不是ClienteCompraPreco
数字。我相信你认为你从上面的 LINQ 查询中得到了一个数字,但你没有。你得到一个of s (——也许每个都是一个)。您不能将 a 转换为数字。想象一下列表是; 那应该转换成什么数字?List
Designacao
List<Designacao>
Designacao
int
List
[1, 2, 3]
您需要从每个查询中获取一个值(例如,通过.FirstOrDefault(i => i.Designacao)
代替.Select(f.Designacao)
),或者您需要处理结果List
在foreach
.
推荐阅读
- arrays - 在 swift 中使用 for in 循环监视位置
- sql - 以下数据结构所需的数据透视
- apache-spark - 重复的列且不属于数据框的连接条件的列 - 如何在 PySpark 中删除?
- reactjs - 直接将 React 呈现为 HTML 的静态站点生成器(输出中没有 React)?
- javascript - 如何使用 selenium python 从动态网站中检索所有链接
- python - Python:如何分离函数读取文件并显示用户输入
- angular - Ionic v3,确认/取消警报框未出现在 iOS 设备的中间
- javascript - 如何在页面加载时“关注”输入字段
- javascript - 动画元素队列正在跳到最终元素
- python - Python:使用数据框从字符串中提取子字符串