我正在尝试创建列表索引。但是,由于某种原因,我不断收到以下错误:
无法将lambda表达式转换为' TEntity'因为它不是 代表
我在这个问题上尝试了很多,但我尝试过的所有东西似乎都没有用。我已经尝试了从创建演员到确保我有正确的Using
陈述
这是专门抛出错误的行
int index = items.IndexOf(x => ID(x) == id.Value);
正在调用此方法
protected Int32? ID(TEntity entity)
{
return entity.As<dynamic>().__id;
}
作为参考,其余适用的内容在此处。
[Element("<div/>"), Editor, IdProperty("__id")]
public abstract class GridEditorBase<TEntity> : EntityGrid<TEntity>, ISetEditValue, IGetEditValue
where TEntity : class, new()
{
private int nextId = 1;
public GridEditorBase(jQueryObject container)
: base(container)
{
}
protected Int32? ID(TEntity entity)
{
return entity.As<dynamic>().__id;
}
protected virtual void Save(ServiceCallOptions opt, Action<ServiceResponse> callback)
{
SaveRequest<TEntity> request = opt.Request.As<SaveRequest<TEntity>>();
TEntity row = Q.DeepClone(request.Entity);
int? id = row.As<dynamic>().__id;
if (id == null)
row.As<dynamic>().__id = nextId++;
if (!ValidateEntity(row, id))
return;
List<TEntity> items = view.GetItems().Clone();
if (id == null)
items.Add(row);
else
{
int index = items.IndexOf(x => ID(x) == id.Value);
items[index] = Q.DeepExtend<TEntity>(new TEntity(), items[index], row);
}
SetEntities(items);
callback(new ServiceResponse());
}
答案 0 :(得分:0)
您需要将项目传递给IndexOf
,您可以这样做:
int index = items.IndexOf(items.FirstOrDefault(x => ID(x) == id.Value));
答案 1 :(得分:0)
也许您缺少这些参考文献之一,请尝试添加它们
使用System.Linq;
使用System.Data.Entity;