Linq 基于结果中字段的不同行

Linq distinct rows based on field within the result

我正在尝试根据 select 中返回的 MacAddress 字段过滤下面的结果以仅显示不同的行。这适用于仅返回单个值但不返回对象的情况。有什么想法吗?

 // Get all records which have not been imported yet?
        var query = (from s in db.Stagings
            join t in db.Printers on s.MacAddress equals t.MacAddress into tj
            from t in tj.DefaultIfEmpty()
            where t == null
            select new { s.MacAddress,s.PrinterName,s.HostName,s.IPAddress,s.ReportDate}).Distinct();

是否可以在不循环的情况下进一步过滤?

这行得通吗?

var query = (from s in db.Stagings
                join t in db.Printers on s.MacAddress equals t.MacAddress into tj
                from t in tj.DefaultIfEmpty()
                where t == null
                select new { s.MacAddress,
                            s.PrinterName,
                            s.HostName,
                            s.IPAddress,
                            s.ReportDate
                        }
                ).GroupBy(s => s.MacAddress)
                .Select(s => s.First());