我正在尝试在var"问题"中添加新记录。我从SQL服务器DB获取XXX列表,并按如下方式返回jTable网格:
public dynamic XXXList(int CCC)
{
try
{
var issue = db.XXX.ToList().
Select(c => new { DisplayText = c.AAA, Value = c.BBB, c.CCC}).
Where(h => h.HHH == JJJ);
return (new { Result = "OK", Options = issue });
}
catch (Exception ex)
{
return (new { Result = "ERROR", Message = ex.Message });
}
}
该函数返回:
{
"$id": "1",
"Result": "OK",
"Options": [
{
"$id": "2",
"DisplayText": "Food and Beverages",
"Value": 4,
"CCC": 4
},
{
"$id": "3",
"DisplayText": "Wrong software versions",
"Value": 5,
"CCC": 4
}
]
}
如何在返回问题之前将另一条记录添加到问题var中? 示例:
{
"DisplayText": "new display text",
"Value": 5,
"CCC": 4
}
修改
在应用答案之后,这是我的功能:
public dynamic XXXList(int CCC)
{
try
{
var newRecord = new[] { new { DisplayText = "None", Value = -1, CCC = -1} };
var issue = db.ProjectXXXs.Where(h => h.CCC == JJJ).Select(c => new { DisplayText = c.AAA, Value = c.BBB, c.CCC }).ToList().Concat(newRecord);
return (new { Result = "OK", Options = issue });
}
catch (Exception ex)
{
return (new { Result = "ERROR", Message = ex.Message });
}
}
非常感谢您的帮助。
答案 0 :(得分:4)
连接任何其他项目:
var additional = new[] {new { DisplayText = ..., Value = ..., CCC = ... },
new { DisplayText = ..., Value = ..., CCC = ... }};
var issue = db.XXX.
Where(h => h.HHH == JJJ).
Select(c => new { DisplayText = c.AAA, Value = c.BBB, c.CCC}).
ToList().
Concat(additional);
(编辑:对于Where,Select和ToList的重新排序归功于James Curran。)
答案 1 :(得分:3)
首先要做的是将ToList()移到最后。在ToList
所在的位置,您可以从数据库的每条记录中读取每一列,从中构建一个列表,然后进行搜索。使用最后的ToList,您只需将该记录的那些列的查询发送到数据库,然后根据返回的内容构建一个列表。您还需要移动选择前的位置,因此它适用于XXX记录而不是选择的输出。
var issue = db.XXX
.Where(h => h.HHH == JJJ)
.Select(c => new { DisplayText = c.AAA, Value = c.BBB, c.CCC})
.ToList();
从此处,其他人建议的Add
或Concat
选项应该有效,但是,您可能必须使用命名类而不是自治类。
class OptionValues
{
public string DisplayText {get; set;}
public int Value {get; set;}
public int CCC {get; set;}
}
// :
// :
.Select(c => new OptionValues {DisplayText = c.AAA, Value = c.BBB, CCC= c.CCC})
答案 2 :(得分:0)
我不确定,但你不能在var问题下写一行:
issue.Add(new { });
使用您想要的值。