Linq 使用列表将集合添加到列表时出现问题。添加 私人列表详细信息(家庭列表) { List lstPolicyInfo=新列表(); var checkInHouseHold=来自LST中的c 其中c.policydeail.Any(p=>p.LineOfBusiness.Trim().ToUpper()=“A”和&p.PolicySourceSystem.ToUpper().Trim()!=“PLC” &&p.PolicySourceSystem.ToUpper().Trim()!=“APS” &&p.PolicySourceSystem.ToUpper().Trim()!=“最重要的”) 选择c.PolicyDetail; foreach(checkInHouseHold中的var策略) { var chek=policies.Where(p=>p.LineOfBusiness.Trim().ToUpper()==“A”和&p.PolicySourceSystem.ToUpper().Trim()!=“PLC” &&p.PolicySourceSystem.ToUpper().Trim()!=“APS” &&p.PolicySourceSystem.ToUpper().Trim()!=“最重要”和p.LineOfBusiness.ToUpper().Trim()=“A”); lstpolicinfo.Add(chek); } 返回策略信息; }
看起来很简单的代码,但给出了错误。由于chek不是T型,如何处理Linq 使用列表将集合添加到列表时出现问题。添加 私人列表详细信息(家庭列表) { List lstPolicyInfo=新列表(); var checkInHouseHold=来自LST中的c 其中c.policydeail.Any(p=>p.LineOfBusiness.Trim().ToUpper()=“A”和&p.PolicySourceSystem.ToUpper().Trim()!=“PLC” &&p.PolicySourceSystem.ToUpper().Trim()!=“APS” &&p.PolicySourceSystem.ToUpper().Trim()!=“最重要的”) 选择c.PolicyDetail; foreach(checkInHouseHold中的var策略) { var chek=policies.Where(p=>p.LineOfBusiness.Trim().ToUpper()==“A”和&p.PolicySourceSystem.ToUpper().Trim()!=“PLC” &&p.PolicySourceSystem.ToUpper().Trim()!=“APS” &&p.PolicySourceSystem.ToUpper().Trim()!=“最重要”和p.LineOfBusiness.ToUpper().Trim()=“A”); lstpolicinfo.Add(chek); } 返回策略信息; },linq,c#-4.0,generics,Linq,C# 4.0,Generics,看起来很简单的代码,但给出了错误。由于chek不是T型,如何处理 错误是“System.Collections.Generic.List.Add()”的最佳重载方法匹配项此方法不是泛型的;你想替换吗 列表与列表 ParsePolicyDetailswithParsePolicyDetails lstpolicinfo.Addwithlstpolicinfo.AddRange 这种方法不是通用的;你想替换吗 列表与列表 ParsePolicyDetailswithParsePolicyDeta
错误是“System.Collections.Generic.List.Add()”的最佳重载方法匹配项此方法不是泛型的;你想替换吗
与列表
列表
withParsePolicyDetails
ParsePolicyDetails
withlstpolicinfo.Add
lstpolicinfo.AddRange
与列表
列表
withParsePolicyDetails
ParsePolicyDetails
withlstpolicinfo.Add
lstpolicinfo.AddRange
- 我认为使用var可能会让人困惑
尝试将它们更改为实际类型,这可能有助于您了解发生了什么
如果看不到其他类是如何设置的,就很难判断。我认为var的使用可能会让人困惑 尝试将它们更改为实际类型,这可能有助于您了解发生了什么
如果看不到类的其余部分是如何设置的,很难判断。请添加一个语言标记,这看起来像C#1)您正在尝试将序列(调用
Where
的结果)添加到列表中。这听起来是个坏主意。2) 看起来这根本不应该是通用的。3) “但给出错误”的信息永远不够——总是说错误是什么。请添加一个语言标记,这看起来像C#1)您试图将序列(调用Where
的结果)添加到列表中。这听起来是个坏主意。2) 看起来这根本不应该是通用的。3) “但给出错误”永远都不够信息——总是说错误是什么。它起作用了。你能简单地告诉我AddRange做了什么Add
只在列表中添加了一项AddRange
获取一系列项目并将它们全部添加到列表中。因此,由于chek
是一个项目范围(它是LINQ查询的结果),您需要使用AddRange
而不是Add
。它起作用了。您能简单地告诉我AddRange做什么吗Add
只向列表中添加一个项目AddRange
获取一系列项目并将它们全部添加到列表中。因此,由于chek
是一个项目范围(它是LINQ查询的结果),因此需要使用AddRange
而不是Add
。
private List<T> ParsePolicyDetails<T>(List<HouseHoldview> lsthousehold)
{
List<T> lstPolicyInfo = new List<T>();
var checkInHouseHold = from c in lsthousehold
where c.PolicyDetail.Any(p => p.LineOfBusiness.Trim().ToUpper() == "A" && p.PolicySourceSystem.ToUpper().Trim() != "PLCS"
&& p.PolicySourceSystem.ToUpper().Trim() != "APS"
&& p.PolicySourceSystem.ToUpper().Trim() != "FOREMOST")
select c.PolicyDetail;
foreach (var policies in checkInHouseHold)
{
var chek=policies.Where(p => p.LineOfBusiness.Trim().ToUpper() == "A" && p.PolicySourceSystem.ToUpper().Trim() != "PLCS"
&& p.PolicySourceSystem.ToUpper().Trim() != "APS"
&& p.PolicySourceSystem.ToUpper().Trim() != "FOREMOST" && p.LineOfBusiness.ToUpper().Trim() == "A");
lstPolicyInfo.Add(chek);
}
return lstPolicyInfo;
}