Reputation: 3034
This is my code for Sub Query Code.
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();
Explanation
I have TimeSheetUserStatus
view and I am comparing Leader_User_Id
with sub query which is fetching data from the User_Details
table. There is no error at coding time but when I am executing this code then I am getting a runtime error as shown below.
Upvotes: 0
Views: 105
Reputation: 2363
Try this
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;
Intead of this
select new { m.User_Id })
use
select m.User_Id
Upvotes: 0
Reputation: 9566
Linq
does not know how to convert method Convert.Toint32()
into a Sql
query.
You need to refactor your code to something like this:
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();
Upvotes: 4