After the definition of a LINQ expression, it is just a definition, and its "query" of the set is not actually performed at this time, the actual action takes place after the definition. This is the so-called delayed execution:
Example: Code
List < Employee > EMPs = New List < Employee > ()
{
New Employee () {ID = " 1001 " , Name = " Ivan " , Dept = " ISD " , Tel = " 1021 " },
New Employee () {ID = " 1002 " , Name = " Ivan " , Dept = " ISD " , Tel = " 1021 " },
};
VaR Query=From EInEMPs
Select E;
EMPs. add ( New employee () {id = " 1003 " , name = " Ivan " , dept = " ISD " , tel = " 1021 " });
Console. writeline (query. Count ());
Run it and you will know that this count is 3, not 2.
If you want to "Store" the results when defining the data in LINQ, you can use tolist, toarray, and other conversion operators. Code
VaR query2=From EInEMPs. tolist<Employee>()
Select E;
EMPs. Add ( New Employee () {ID = " 1004 " , Name = " Ivan " , Dept = " ISD " , Tel = " 1021 " });
Console. writeline (query2.count ());