繁体   English   中英

Select 使用 lambda 表达式的 object 数组中变量的所有不同值

[英]Select all distinct values of variable in object array using lambda expression

我有一组具有ProductId属性的对象。 我想使用 lambda 表达式到 select 我的 object 数组productsProductId的所有不同值。

在这里我得到产品

var products = Database.SqlQuery<StructuredProduct>("query").ToArray();

而且我可以按 ProductId 的不同值进行分组,但它仍然返回一个对象数组,而不是 ProductIds 数组

var productIds= products.GroupBy(p => p.ProductId).Select(group => group.First()).ToArray();

关于如何在products数组上使用 Lambda 表达式来获取ProductIds的所有不同值的任何想法?

var productIds= products.Select(p => p.ProductId).Distict();

但作为"query" sql 命令的一部分,直接在数据库上执行此操作可能会更好。

使用 LINQ 方法.Distinct()

var productIds = products.Select(p => p.ProductId).Distinct();

我只用查询理解语法做过 GroupBy 操作。 如果你这样做, group / by / into ,你分组的东西有一个名为key的属性。 那将包含您的“productid”

var results = from product in products
    group product by ProductId
    into individualProducts
    select individualProducts;

var productsArray = individualProducts.Select(p => p.Key).ToArray();

items individualProducts集合每个都有一个Key和一个具有相同 productid 的事物集合。

如果您直接在数据库外执行此操作,您的所有操作将很好地组合成一个 SQL 语句,当您的代码到达.ToArray()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM