簡體   English   中英

Linq子查詢不起作用

[英]Linq Sub Query is not working

這是我的子查詢代碼代碼

var lis = 
    from t in de.TimeSheetUserStatus 
    where t.Leader_User_Id == Convert.ToInt32(
        (from m in de.User_Details 
        where m.Name.Contains(Session["user"].ToString()) 
        select new { m.User_Id }).FirstOrDefault()) 
    select t;

grdTimeSheet.DataSource = lis.ToList();
grdTimeSheet.DataBind();

說明

我有TimeSheetUserStatus視圖,並且正在將Leader_User_Id與要從User_Details表中獲取數據的子查詢進行比較。 在編碼時沒有錯誤,但是當我執行此代碼時,我遇到了如下所示的運行時錯誤。

在此處輸入圖片說明

Linq不知道如何將方法Convert.Toint32()轉換為Sql查詢。

您需要將代碼重構為以下形式:

var userId = de.User_Details
        .Where(m => m.Name.Contains(Session["user"].ToString()))
        .Select(m => new{ m.User_Id })
        .FirstOrDefault();

var lis = Enumerable.Empty<TimeSheetUserStatus>();
if(userId != null)
{
    lis = de.TimeSheetUserStatus
        .Where(t => t.Leader_User_Id == userId.User_Id);
}

grdTimeSheet.DataSource = lis.ToList();
grdTimeSheet.DataBind();

嘗試這個

        var lis = from t in TimeSheetUserStatus
                  where t.Leader_User_Id == Convert.ToInt32(
                  (from m in User_Details
                   where m.Name.Contains(uName)
                   select  m.User_Id )
                        .FirstOrDefault())
                  select t;

對此感興趣

select new { m.User_Id })

采用

 select  m.User_Id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM