我的查询看起来非常类似于以下内容:
var query = plans
.Where(p =>
p.IsOptOut ||
(p.PropertyType == PropertyType.Property1 && p.SomeCollection.Count > 0))
.Select(p =>
new CustomClass
{
Id = p.Id,
PropertyType = p.PropertyType,
IsOptOut = p.IsOptOut
});
因此,我们从plans
中选择IsOptOut
为真的任何记录,或p.PropertyType
为特定值且p.SomeCollection
至少有一条记录。
这会使自己成为可能的结果集,如下所示:
Id PropertyType IsOptOut
1 Foo true
2 Foo false
3 Foo false
4 Bar true
5 Baz true
6 Baz false
如何修改LINQ查询,以便WHERE子句可以将当前记录与plans
集合中的其他记录进行比较,并排除IsOptOut为true的所有记录,并且它是唯一返回的记录对于给定的属性类型。
在上面的示例中,ID#4应该从结果集中排除,因为IsOptOut为true,并且" Bar"的PropertyType的结果集中没有其他记录。
作为旁注,如果IsOptOut
为真,则SomeCollection
中不会有记录,这是一项商业规则。
答案 0 :(得分:1)
您不能直接在同一个 var gulp = require('gulp');
var sass = require('gulp-sass');
var browserSync = require('browser-sync').create();
var prefix = require('gulp-autoprefixer');
var rename = require('gulp-rename');
var sourcemaps = require('gulp-sourcemaps');
var cssclean = require('gulp-clean-css');
// create sass tasks
gulp.task('sass', function () {
return gulp.src('assets/scss/test.scss')
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(rename({ suffix: '.min' }))
.pipe(cssclean())
.pipe(prefix("last 2 versions", "> 1%", "ie 8", "Android 2", "Firefox ESR"))
.pipe(sourcemaps.write(''))
.pipe(gulp.dest('assets/styles'))
.pipe(browserSync.stream({ match: '**/*.css' }))
.on('error', function (err) {
console.error('Error!', err.message);
});
});
gulp.task('serve', ['sass'], function () {
browserSync.init({
proxy: "localhost/portfolio2014",
open: false
});
gulp.watch("assets/scss/**/*.scss", ['sass']);
gulp.watch(["assets/styles/*.css", "assets/javascript/*.js"]).on('change', browserSync.reload);
});
// default task (just run gulp)
gulp.task('default', ['serve']);
子句中执行此操作,但可以使用类似的内容(请参阅注释):
Where