मैं निम्नलिखित LINQ क्वेरी ...LINQ क्वेरी गुमनाम प्रकार POCO वस्तु को नहीं बदला जा सकता
public List<UserProject> GetProjectsByUser(int userid)
{
//var query =
return (
from p in this.Entities.Projects
join c in this.Entities.Categories
on p.CategoryId equals c.CategoryId
join u in this.Entities.Users
on p.UserId equals u.UserId
where p.UserId == 11
select
new
{
p.ProjectId,
u.UserName,
p.UserId,
ProjectName = p.Name,
ProjectDescription = p.Description,
CategoryName = c.Name
}
into pcup
join m in this.Entities.Messages
on
pcup.ProjectId equals m.ProjectId
into pm
select
new {
pcup.ProjectId,
pcup.UserId,
pcup.ProjectName,
pcup.ProjectDescription,
Messages = pm
}
).ToList<UserProject>();
}
और मैं निम्न दृश्य उद्देश्य यह है कि मैं पॉप्युलेट करने के लिए कोशिश कर रहा हूँ ....
public class UserProject
{
UserProject()
{
Messages = new EnumerableQuery<Message>();
}
public int ProjectId;
public int UserId;
public string ProjectName;
public string ProjectDescription;
public IEnumerable<Message> Messages;
//public string UserName;
//public string CategoryName;
//public int CategoryId;
}
किसी प्रोजेक्ट में 0 या संदेश हो सकते हैं। मेरा लक्ष्य यहां मेरे एमवीसी व्यू में UserProject ऑब्जेक्ट्स की एक सूची पास करना है, प्रत्येक UserProject ऑब्जेक्ट में संदेशों का संग्रह हो सकता है। इस प्रकार
त्रुटि 1 उदाहरण तर्क त्रुटि मैं मिलता है: '
System.Linq.IQueryable<AnonymousType#1>
' से करने के लिए 'System.Collections.Generic.IEnumerable<Riebro.Services.UserProject>
'त्रुटि परिवर्तित नहीं कर सकते 2 '
System.Linq.IQueryable<AnonymousType#1>
' 'ToList
' के लिए एक परिभाषा और सबसे अच्छा विस्तार शामिल नहीं है विधि अधिभार 'System.Linq.Enumerable.ToList<TSource>(System.Collections.Generic.IEnumerable<TSource>)
' में कुछ ऐसी अमान्य तर्क हैं
वर्तमान में संदेशों इकाई परियोजनाओं के लिए एक नेविगेशन संपत्ति नहीं है ... यह चाहिए ... मुझे लगता है कि यह परिवर्तन बाद में जोड़ देगा ... लेकिन इस समय मैं सिर्फ के लिए की जरूरत है काम पर एपी।
संपादित
यह खड़ा के रूप में अब LINQ क्वेरी इस तरह दिखता है ...
return (
from p in this.Entities.Projects
join c in this.Entities.Categories
on p.CategoryId equals c.CategoryId
join u in this.Entities.Users
on p.UserId equals u.UserId
where p.UserId == userid
select
new
{
p.ProjectId,
u.UserName,
p.UserId,
p.Name,
p.Description,
//CategoryName = c.Name
}
into pcup
join m in this.Entities.Messages
on
pcup.ProjectId equals m.ProjectId
into pm
select
new UserProject {
ProjectId = pcup.ProjectId,
UserId = pcup.UserId,
ProjectName = pcup.Name,
ProjectDescription = pcup.Description,
Messages = pm
}
).ToList<UserProject>();
और देखने वर्ग इस तरह दिखता है ...
public class UserProject
{
public UserProject()
{
Messages = new List<Message>();
}
public int ProjectId;
public string UserName;
public int UserId;
public string ProjectName;
public string ProjectDescription;
public List<Message> Messages;
//public string CategoryName;
//public int CategoryId;
}
और अब मैं कर रहा हूँ निम्नलिखित त्रुटि प्राप्त हो रही है ...
त्रुटि 1 सी annot implicitly प्रकार '
System.Collections.Generic.IEnumerable<Riebro.Message>
' से 'System.Collections.Generic.List<Riebro.Message>
' में परिवर्तित करें। एक स्पष्ट रूपांतरण मौजूद है (क्या आप एक कास्ट गायब हैं?)
+1 इसके अलावा, 'उपयोगकर्ताप्रोजेक्ट() 'कन्स्ट्रक्टर, जो' संदेश 'शुरू करता है, को सार्वजनिक किया जाना चाहिए, अन्यथा यह पहुंच योग्य नहीं होगा। –
धन्यवाद ... जो प्रारंभ में काम करता है ... लेकिन अब मैं फंस गया हूं ... त्रुटि अंतर्निहित रूप से प्रकार 'System.Collections.Generic.IEnumerable' को 'System.Collections.Generic' में परिवर्तित नहीं कर सकता। सूची '। एक स्पष्ट रूपांतरण मौजूद है (क्या आप एक कास्ट गायब हैं?) –
अपनी क्वेरी के अंत में ToList() का उपयोग करें –