我遇到的情况是,在 3 种不同情况下,结果集有 95% 相同。 5% 的差异取决于给定的变量,因此会填充(或不填充)剩余的 5% 的字段。
作为一个简单的例子,这里是返回的结果对象:
public class MyResults {
public string PropertyA { get; set; }
public string PropertyB { get; set; }
public string PropertyC { get; set; }
public string PropertyD { get; set; }
public string PropertyE { get; set; }
}
目前我有一种构建结果的方法,我有以下内容:
public List<MyResults> GetMyResults(int someParameter) {
IQueryable<MyResults> query;
if (someParameter == "A") {
query = entities.Select(x => new MyResults {
PropertyA = x.PropertyA, // Common
PropertyB = x.PropertyB, // Common
PropertyC = x.PropertyC, // Different
};
} else if (someParameter == "B") {
query = entities.Select(x => new MyResults {
PropertyA = x.PropertyA, // Common
PropertyB = x.PropertyB, // Common
PropertyD = x.PropertyD, // Different
};
} else {
query = entities.Select(x => new MyResults {
PropertyA = x.PropertyA, // Common
PropertyB = x.PropertyB, // Common
PropertyE = x.PropertyE, // Different
};
}
return query.ToList();
}
这是执行此操作的所需方法:
public List<MyResults> GetMyResults(int someParameter) {
IQueryable<MyResults> query = entities.Select(x => new MyResults {
PropertyA = x.PropertyA, // Common
PropertyB = x.PropertyB, // Common
PropertyC = x.PropertyC, // Common
};
if (someParameter == "A") {
query = entities.Select(x => new MyResults {
PropertyC = x.PropertyC // Different
});
} else if (someParameter == "B") {
query = entities.Select(x => new MyResults {
PropertyD = x.PropertyD // Different
});
} else {
query = entities.Select(x => new MyResults {
PropertyE = x.PropertyE // Different
});
}
return query.ToList();
}
这样,所有结果的一致字段都是相同的,我只需要添加不同的部分即可。
这可能吗?
您可以按如下方式使用三元运算符:
return entities.Select(x => new MyResults {
PropertyA = x.PropertyA, // Common
PropertyB = x.PropertyB, // Common
PropertyC = someParameter == 1 ? x.PropertyC : null,
PropertyD = someParameter == 2 ? x.PropertyD : null,
PropertyE = someParameter == 3 ? x.PropertyE : null,
}).ToList();
基本上,如果 someParameter
与给定的 propertyX
的大小写不匹配,则 string
的默认值为 null
属性值将为 null
。如果是,就会得到想要的值
我是一名优秀的程序员,十分优秀!