我正在研究 LINQ 腳本/lambda 以從物件中提取資料。有一個連接表/類來連接 A 和 B 表/物件。
我已經設法提取了記錄,但它采用以下形式
List<IEnumerable<ValidationRule>>
我想在哪里忽略加入物件并簡單地得到List<ValidationRule>?
public static List<ValidationRule> GetValidations(string fieldName, Dictionary<string, DataMappingPolicy> dataMappingPolicies)
{
List<ValidationRule> validationRules = new List<ValidationRule>();
var policyValidations = dataMappingPolicies.Where(_ => _.Key == fieldName).Select(_ => _.Value.PolicyValidationRules.Select(_ => _.ValidationRule)).ToList();
return validationRules;
}
DataMappingPolicy
public class DataMappingPolicy
{
public DataMappingPolicy()
{
this.PolicyValidationRules = new HashSet<PolicyValidationRule>();
}
public Guid DataMappingPolicyId { get; set; }
public ICollection<PolicyValidationRule> PolicyValidationRules { get; set; }
}
PolicyValidationRule
public class PolicyValidationRule
{
public Guid PolicyValidationRuleId { get; set; }
public Guid DataMappingPolicyId { get; set; }
public DataMappingPolicy DataMappingPolicy { get; set; }
public Guid ValidationRuleId { get; set; }
public ValidationRule ValidationRule { get; set; }
}
uj5u.com熱心網友回復:
展平串列 fromPolicyValidationRules以獲取所有ValidationRulevia .SelectMany()。
var policyValidations = dataMappingPolicies
.Where(_ => _.Key == fieldName)
.SelectMany(_ => _.Value.PolicyValidationRules)
.Select(_ => _.ValidationRule)
.ToList();
uj5u.com熱心網友回復:
我對如何解決問題有一個想法。
public static List<ValidationRule> GetValidations(string fieldName, Dictionary<string, DataMappingPolicy> dataMappingPolicies)
{
List<ValidationRule> validationRules = new List<ValidationRule>();
var policyValidations = dataMappingPolicies.Where(_ => _.Key == fieldName).Select(_ => _.Value.PolicyValidationRules.Select(_ => _.ValidationRule));
foreach(var item in policiValidations)
{
validationRules.Add(item);
}
return validationRules;
}
首先ToList()從您的代碼中洗掉。
然后 if policyValidationsis 的型別IEnumerable<ValidationRule>比您應該能夠使用陳述句遍歷值foreach并將它們中的每一個添加到您嘗試回傳的串列中。
uj5u.com熱心網友回復:
您可以使用SelectManywhich 展平回傳串列串列的查詢。
var policyValidations = dataMappingPolicies.Where(_ => _.Key == fieldName)
.Select(_ => _.Value)
.SelectMany(_ => _.PolicyValidationRules)
.Select(_ => _.ValidationRule))
.ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/494199.html
上一篇:按串列資料索引動態分組
