如何在另一种方法中使用此LINQ的结果并获取属性CountryID
和count
?
public IQueryable GetRequestsByRegion(string RequestType)
{
try
{
var q = from re in context.RequestExtensions
from r in context.Requests
where re.ExtensionID == r.ExtraInfoID
&& r.OriginalRequestID == null
&& r.RequestType == RequestType
group re by new { CountryID = re.CountryID } into grouped
select new { CountryID = (int)grouped.Key.CountryID, count = (int)grouped.Count(t => t.CountryID != null) } ;
return q;
}
catch (Exception ex)
{
}
return null;
}
public void GetAllInformationRequestsByRegion()
{
IQueryable dict = GetRequestsByRegion("tab8elem1");
/* How to iterate and get the properties here? */
}
返回类型和变量类型不需要是指示的......这只是我的尝试。我也在使用WCF,所以我不能返回对象类型。
答案 0 :(得分:6)
就像它是任何其他类型的对象一样:
foreach(var obj in q) {
var id = obj.CountryID;
var count = obj.count;
}
答案 1 :(得分:2)
其他强>
也许你想在方法之外使用它?然后使用这样的东西:
public void ForEach<T>(IEnumerable<T> l, Action<T> a)
{
foreach (var e in l) a(e);
}
用法:
ForEach(from x in bar select new { Foo = x, Frequency = 4444, Pitch = 100 },
x =>
{
//do stuff here
Console.WriteLine(x.Foo);
Console.Beep(x.Pitch,x.Frequency);
});
答案 2 :(得分:1)
您可以像处理常规C#对象一样处理结果。 Intellisense将帮助您进行匿名输入。
foreach (var anonymousObject in q)
{
// anonymousObject.CountryID;
// anonymousObject.count;
}
答案 3 :(得分:0)
匿名类型是声明它们的方法的本地类型。您不能直接返回它们。如果需要将它们暴露在声明方法之外,则需要将其命名为可以命名的类型(您自己的自定义类或其他现有框架类,如KeyValuePair)。