【发布时间】:2015-10-16 14:00:47
【问题描述】:
我有一个格式如下的 csv 文件:
此规则表加载在 List<DoctypeRule> 对象中,我使用此列表根据 RuleCode 和 RuleValue 获取 DocType 值。 DoctypeRule 类如下所示
public class DoctypeRule
{
public string doctype {get; set; }
public string ruleCode {get; set; }
public string ruleValue {get; set; }
}
现在,要获取规则,我使用 LINQ 并传递参数。
DoctypeRule rule = new DoctypeRule();
rule = lsdoctypeRules.Find(r => r.docType == myparameter);
我还想获取具有类似规则的文档类型并存储在列表中。由于某些 RuleValue 将具有逗号分隔值,因此我无法获取具有相似规则的文档类型 示例:
string ruleCode = rule.ruleCode;;
string ruleValue = rule.ruleValue;
List<string> lsruleValues = ruleValue.Split(',').ToList();
现在收集具有我使用的类似规则的文档类型
var siblingDoctypes = lsdoctypeRules
.Where(r => r.ruleValue == ruleValue && r.ruleCode == ruleCode)
.Select(x => x.docType);
当 RuleValue 只有一个值时,这很适合获取 doctypes。但是当有逗号分隔的值时,我尝试了这样的方法
var siblingDoctypes = lsdoctypeRules
.Where(r => r.ruleValue.Split(',').ToList().Any(lsruleValues.Any().ToString()) && r.ruleCode == ruleCode)
.Select(x => x.docType);
如果lsruleValues 有 4 个项目,则预期结果
产权政策附表 A、产权政策附表 B-第一部分、产权政策 附表 B-第 II 部分,标题政策
那么兄弟文档类型应该是一个列表
产权背书、产权政策附表 A、产权政策附表 B-Part I,Title Policy Schedule B-Part II.
【问题讨论】:
-
您是否知道您的方案 vialotes 数据库规范化?请阅读:stackoverflow.com/questions/3653462/…
标签: c# linq list split ienumerable