选择常量并与另一个列表并集

时间:2015-04-12 03:36:05

标签: c# linq

我有一个包含pk和sName列的类别表。我想添加具有常量值的其他行,例如 pk = -1, sName = "NONE" 这样用户可以根据需要选择"NONE"行。

以下是检索类别的代码,

var catList = from c in context.Category
              where c.iStatus == 1 && c.iCat1ID == Cat1ID
              select new { c.pk, c.sName };

以下是检索常量行的代码

var noneList = from c in context.Category
               select new { pk = -1, sName = "  NONE" };

然后我将noneList添加到catList

catList = catList.Union(noneList);

当Category表中至少有一行时,这可以正常工作。当类别表中有0行时,noneList将无法从查询中获取任何内容,catList将不会有"NONE"行。

我已经搜索了很多如何使用常量与行结合但我无法找到满足我情况的示例。

这是另一次尝试。

var catList = from c in context.Category
              where c.iStatus == 1 && c.iCat1ID == Cat1ID
              select new { c.pk, c.sName };

var noneList = new[] { new { pk = -1, sName = " NONE" }};

catList = catList.Union(noneList);

此代码在设计时不会出现任何错误,但是当我运行它时,它会抛出:

  

无法创建类型'匿名类型'的常量值。在此上下文中仅支持原始类型或枚举类型。

[编辑] 通过将catList转换为数组看起来它不会抛出任何异常。

var aa = CatList.ToArray().Union(NoneList);

感谢任何其他建议。

1 个答案:

答案 0 :(得分:1)

是实体框架吗?首先实现查询以在内存中执行联合。致电castList.ToArray().Union()(或ToList())。