我有一个以var LinqQuery开头的LINQ查询.但我想将LinqQuery放在if语句中,因此它的过程是某些属性为null或不为null.我需要在if语句之外设置var LinqQuery,因为我有代码循环通过LinqQuery.它是否在if语句之外初始化var LinqQuery.像var LinqQuery = string.Empty这样的东西?
var lQuery = (from a in gServiceContext.CreateQuery("account")
where (a["name"].Equals(lLead.AccountName) &&
a["address1_postalcode"].Equals(lLead.ZipCode) &&
a["address1_stateorprovince"].Equals(lLead.State)) ||
(a["address1_line1"].Equals(lLead.Address1) &&
a["address1_postalcode"].Equals(lLead.ZipCode) &&
a["address1_city"].Equals(lLead.City))
select new
{
Name = !a.Contains("name") ? string.Empty : a["name"],
City = !a.Contains("address1_city") ? string.Empty : a["address1_city"],
State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"],
Zip = !a.Contains("address1_postalcode") ? string.Empty : a["address1_postalcode"],
AccountId = !a.Contains("accountid") ? string.Empty : a["accountid"]
});
Run Code Online (Sandbox Code Playgroud)
谢谢!
Ant*_*ram 12
您需要将其初始化为与查询的最终形状兼容的类型,或者只是显式键入它.
IQueryable<Foo> theQuery; // explicitly type it
// var theQuery = db.Foos.AsQueryable(); // alternately infer it
if (blah)
theQuery = db.Foos.Where(...);
else
theQuery = db.Foos.OrderBy(...);
theQuery = theQuery.Where(...); // keep chaining
//etc;
Run Code Online (Sandbox Code Playgroud)
请注意,类型推断一次,您最初无法将其设置为string.Empty,然后期望能够将其与Linq-to-Sql查询一起使用.这不起作用,就像在这种情况下使用显式输入一样不行.您不希望能够这样做:
string blah = "";
blah = db.Foos.Where(f => f.Bar > 20);
Run Code Online (Sandbox Code Playgroud)
也不能代替你string用var,并期望获得成功.var不代表dynamic.
| 归档时间: |
|
| 查看次数: |
10753 次 |
| 最近记录: |