gpt4 book ai didi

c# - 如何将多个选择添加到现有的 IQueryable

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:14 24 4
gpt4 key购买 nike

我遇到的情况是,在 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。如果是,就会得到想要的值

关于c# - 如何将多个选择添加到现有的 IQueryable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46204062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com