将generic.list <string>转换为通用列表产品</string>

时间:2013-06-04 09:55:20

标签: linq entity-framework

我有这样的代码:

  var list = _appData.GetAdvanceSearchData(Convert.ToInt16(collection["Product"])).ToList();
   List<ProductMaterial> materials = list.Select(x => x.ProductMaterial).Distinct().ToList();

我得到的例外:

Cannot implicitly convert type 'System.Collections.Generic.List<string>' to 'System.Collections.Generic.List<Crescent.LinqModel.ProductMaterial>' 

应该做什么?

产品材料类:

 public class ProductMaterial
{
    public string ProductMaterials {get;set;}
}

list.Select(x =&gt; x.ProductMaterial).Distinct()。ToList()给我数组字符串虽然已经转换为列表,我想要'ProductMaterial'类型的结果。

3 个答案:

答案 0 :(得分:0)

请改用:

var materials = list.Select(x => x.ProductMaterial).Distinct().ToList();

或者:

List<string> materials = list.Select(x => x.ProductMaterial).Distinct().ToList();

唯一不同的是materials变量的类型。

答案 1 :(得分:0)

我想你想要DistinctBy

List<ProductMaterial> materials =
    list.DistinctBy(x => x.ProductMaterial).ToList();

您可以使用该扩展方法或搜索某些other implementation here

答案 2 :(得分:0)

查询list.Select(x => x.ProductMaterial).Distinct().ToList();返回List<string>而不是List<ProductMaterial>

您可以使用列表而不是List<ProductMaterial>。 我不确定你想要什么。如果指定了列表的数据类型,我可以给出更准确的意见。