C# 需要在LINQ的DTO中选择不同类型的值
我需要选择两个具有不同数据类型的不同值,并在DTO中使用它 我尝试了下面的代码,这只选择了产品名称,我还想选择ProductidC# 需要在LINQ的DTO中选择不同类型的值,c#,linq,C#,Linq,我需要选择两个具有不同数据类型的不同值,并在DTO中使用它 我尝试了下面的代码,这只选择了产品名称,我还想选择Productid var SubList = (from c in _context.Product where (c.Id == Productid) select new productDto { SubProduct = c.SubProduc
var SubList = (from c in _context.Product
where (c.Id == Productid)
select new productDto
{
SubProduct = c.SubProduct,
}).ToList().Distinct();
foreach (var subproductVal in SubList)
{
String subproduct = subproductVal.SubProduct;
var productList = (from c in _context.Product
orderby c.ProductName descending
where (c.SubProduct == subproduct)
select
c.ProductName
).Distinct().ToArray();
await _context.SaveChangesAsync();
subproductVal.ProductName = productList;
}
我需要选择产品ID和产品名称您可以写:
var SubList = (from c in _context.Product
where (c.Id == Productid)
select new productDto
{
SubProduct = c.SubProduct,
}).ToList().Distinct();
foreach (var subproductVal in SubList)
{
String subproduct = subproductVal.SubProduct;
var productList = (from c in _context.Product
orderby c.ProductName descending
where (c.SubProduct == subproduct)
select new {
c.ProductName,
c.ProductId
).Distinct().ToArray();
await _context.SaveChangesAsync();
...
}
然后您的productList
是一个匿名类型的数组,其中数组的每个元素都是匿名类型的对象
您还可以添加一些类:
public class ProductInfo
{
public int ProductId {get;set;}
public string ProductName {get;set;}
}
然后,您的代码如下所示:
...
var productList = (from c in _context.Product
orderby c.ProductName descending
where (c.SubProduct == subproduct)
select new ProductInfo {
ProductName = c.ProductName,
ProductId = c.ProductId
).Distinct().ToArray();
...
然后,productList
数组的每个元素都是类ProductInfo
的对象
最后,您的代码(如我所见)不是最优的。您应该将其重写为一个linq查询(尤其是在使用数据库时)。使用新的{c.ProductName,c.ProductId}而不是c.ProductName对您有效吗?ProductName和ProductId都是数组类型,您可以编写
var productNameArray=productList。选择(e=>e.ProductName)。ToArray()代码>