Jon*_*eet 38
是否要将其添加到数据库中,或者只是添加到数据绑定等其他内容的结果列表中?
如果它是前者,则需要对正在使用的任何类型的LINQ使用正常的add操作,而是使用表格表示而不是IQueryable.查询仅读取数据.
如果是后者,请使用Enumerable.Concat将现有序列(IQueryable)连接到一个包含额外条目的新序列(数组在这里可以正常工作,或列表),并使用结果进行绑定等.这可能是值得的首先使用AsEnumerable()确保使用Enumerable而不是Queryable.例如:
IQueryable<string> names = [...];
names = names.AsEnumerable().Concat(new[] { "(None)", "(Add new)" });
Run Code Online (Sandbox Code Playgroud)
Ali*_*söz 14
你应该先把它转换成List;
IQueryable<int> foo = new SomeQueryable<int<();
List<int> list = foo.ToList();
list.Add(5);
Run Code Online (Sandbox Code Playgroud)
或者使用Concat
IQueryable<int> foo = new SomeQueryable<int<();
foo = foo.Concat(new int[]{5});
Run Code Online (Sandbox Code Playgroud)
编辑:确定你必须重新分配foo.
小智 5
简单的答案是,除非将记录添加到Iqueryable正在查询的基础数据存储中,否则无法将新记录添加到IQueryable中。因此,如果您使用的是LinqToSql,则必须在IQueryable查询的表中添加一行,以便将行“添加”到IQueryable中。
请记住,IQueryable不是结果集,而是一个查询。除非使用.ToList()之类的内容,否则IQueryable不会评估结果集,更重要的是,IQueryable不会挂在该结果集上。它创建一个列表并将结果放入其中。因此,这意味着如果在Iqueryable上调用ToList()两次,它将关闭并两次查询数据库。不在乎它可能效率不高。
因此,如果您看一下上面其他人使用的示例,则将AsEnumerable()更改为ToList()的简单更改很可能会解决您的问题。
就像是:
dcDataContext db = new dcDataContext();
var query = from c in db.tblSexes
select new { c.SexCode, c.SexName };
var results = query.ToList().Concat(new[] { new { SexCode = -1, SexName = "Please select your Gender" } });
//or even better now that it's a list
var results = query.ToList().Add(new { SexCode = -1, SexName = "Please select your Gender" });
SelectList sliSex = new SelectList(results, "SexCode", "SexName");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55569 次 |
| 最近记录: |