小编Seb*_*Seb的帖子

Linq:方法无法翻译成商店表达式

我目前正在尝试限制哪些用户可以访问哪些组,并且正在使用linq执行此操作.当我将相关组添加到视图时,我的问题出现了.

我一直得到的错误是:

LINQ to Entities无法识别方法'System.String GetUserId(System.Security.Principal.IIdentity)'方法,并且此方法无法转换为存储表达式

这是我的代码:

  var groupUser = db.GroupUsers.Where(u => u.ApplicationUserId == User.Identity.GetUserId()).Select(gr => gr.GroupId);
  pv.GroupList = db.Groups.Where(g => groupUser.Contains(g.Id)).ToList();
  return View(pv);
Run Code Online (Sandbox Code Playgroud)

.net c# linq linq-to-entities visual-studio-2010

2
推荐指数
1
解决办法
5317
查看次数

将空的IEnumerable <>传递给构造函数

根据数据库中的当前内容,会发生两件事.

  1. 如果表buildingDefine不为空,则将此表传递给构造函数.

  2. 否则将buildingDefine传递给构造函数.

这是我对数据库的检查:

        //Is there content in buildingDefineTable?
if (!_bDefine.Any())
{
    int currentBuildingId = ((BuildingTable)((ListView)sender).SelectedItem).Id;

    var currentBool = from bla in _building
                        where bla.Id == currentBuildingId
                        select bla.BuildingBool;

    //Is the buildingBool false? 
    if (!currentBool.First())
    {
        var currentBuildingDefine = from BuildingDefineTable in _bDefine
                                                    where BuildingDefineTable.buildingId == ((BuildingTable)((ListView)sender).SelectedItem).Id
                                                    select BuildingDefineTable;


        await Navigation.PushAsync(new DefineBuilding(currentBuildingDefine));
    }    
    else
    {
        //Do something here. 
    }           

}
//No content in buildingDefineTable
else
{
    await Navigation.PushAsync(new DefineBuilding(new IEnumerable<_bDefine> bDefineTable ));
}
Run Code Online (Sandbox Code Playgroud)

if语句工作正常,但是每当数据库不包含表中的任何信息时,我都无法传递表的空列表.

这是我的构造函数:

public DefineBuilding(IEnumerable<BuildingDefineTable> bDefineTable)
{
    if …
Run Code Online (Sandbox Code Playgroud)

.net c# linq

0
推荐指数
1
解决办法
244
查看次数

标签 统计

.net ×2

c# ×2

linq ×2

linq-to-entities ×1

visual-studio-2010 ×1