public class TestClass
{
public TestClass(int id, string name)
{
Name = name;
Id = id;
}
public string Name
{ get; private set; }
public int Id
{ get; private set; }
public string Tag
{ get; set; }
public DateTime Time
{ get; set; }
}
private static void Main(string[] args)
{
List<TestClass> list = new List<TestClass>();
for (int i = 0; i < 5; i++)
{
TestClass t = new TestClass(i, Guid.NewGuid().ToString());
t.Tag = i%2 == 0?"Hello":"World";
list.Add(t);
}
var query = list
.GroupBy(l=>l.Tag);
Func<IEnumerable<IGrouping<string, TestClass>>, int[]> func = GetIds<string,TestClass>;
func.BeginInvoke(query, null, null);
Console.Read();
}
private static int[] GetIds<T, U>(IEnumerable<IGrouping<T, U>> query)
{
List<int> ints = new List<int>();
foreach(var y in query)
ints.Add(y.Count());
return ints.ToArray();
}
}
나는 컬렉션이 반복 될 때까지 LINQ가 실행되지 않는다는 것을 알고 있지만 쿼리가 다른 비동기식 메서드에 전달 되더라도 여전히 true를 유지한다고 가정 할 수 있습니다.이 LINQ 쿼리는 언제 실행됩니까?
이 기억은, 쿼리는 query_을 나타내는 _an 객체에 불과하다. SQL 쿼리 문자열처럼 생각하면됩니다. 쿼리 문자열을 전달하면 쿼리가 실행되지 않습니다. 쿼리를 실행하면 쿼리가 실행됩니다. –