c# - Executing a linq query similar to Dictionary format using groupby to retrieve value from another list -
i have table user , items there exists many many relationship in table list(which contains userid , itemid). trying retrieve each item users. schema tables are
create table dbo.item ( itemid int identity(1,1) not null, item_name varchar(30) not null, primary key (itemid) ); create table dbo.list ( itemid int not null, userid varchar(11) not null, ); user table has same schema item table userid of type varchar(11). connection string's name myentities
myentities obj = new myentities(); the linq query of format
var test1 = p in obj.user k in p.item p.userid == userid //retrieving items particular user select itemres { itemid = k.itemid }; ienumerable<itemres> itemret = test1.tolist(); var query = p in obj.user k in p.item group p.userid itemret.contains(k.itemid) g// error1 select new result { fitemid = g.key, fuserid = g.tolist() }; ienumerable<result>output = query.todictionary(fitemid, fuserid);//error2 the first query works while second query throws compilation error here errors arise follows
error1:ienumerable not contain definition 'contains'
error2:the name fitemid not exist in current context, name fuserid not exist in current context
the class looks this
public class result { public int fitemid { get; set; } public list<string> fuserid { get; set; } } i new linq concepts don't know if syntax , definition right or not. wrote first query retrieve list of items. in second query each of item in list, retrieving users of each particular item.
please me in rectifying query....
update1: wrong converting query todictionary format.@gusman , @alex pointed me in right direction converted second query as
ienumerable<result> query = p in obj.user k in p.item group p.userid itemret.contains(k.itemid) g// error1 select new result { fitemid = g.key, fuserid = g.tolist() }; and error2 gone
update 2:to remove error1, did @kwan245 said
myentities obj = new myentities(); var test1 = p in obj.user k in p.item p.userid == userid //retrieving items particular >user select k.itemid ; ienumerable<int> itemret = test1.tolist(); and second query this
ienumerable<result> query = p in obj.user k in p.item itemret.contains(k.itemid) group p.userid k.itemid g// new error select new result { fitemid = g.key, fuserid = g.tolist() }; new error popped : linq entities not recognize method 'system.collections.generic.list1[system.string] tolist[string](system.collections.generic.ienumerable1[system.string])' method, , method cannot translated store expression
this might due wrong syntax right answer
1) version of entity framework used ? contains supported after ef4.
2) use functionary todictionary method shown @ https://msdn.microsoft.com/en-us/library/bb549277%28v=vs.95%29.aspx
3) try change code :
myentities obj = new myentities(); var test1 = p in obj.user k in p.item p.userid == userid //retrieving items particular >user select k.itemid ; ienumerable<int> itemret = test1.tolist(); assuming itemid int
Comments
Post a Comment