以下代码有效但在三元运算符中我必须得到"内容"字段2次,有没有办法存储"内容"变量中的字段然后进行caparison?
List<MPContentSearchResultItem> list = (from result in results
select new MPContentSearchResultItem()
{
Content = string.IsNullOrEmpty(GetSummary(result.Document.GetItem().GetFieldValue("Content"), 300)) ? GetSummary(result.Document.GetItem().GetFieldValue("Circumstances"), 300) :GetSummary(result.Document.GetItem().GetFieldValue("Content"), 300)
}).ToList();
条件是&#34;内容&#34;字段为空或具有空值,然后从&#34; Circumstances&#34;否则从内容中获取价值&#34;内容&#34;领域。
答案 0 :(得分:2)
您可以使用let
clause:
from result in results
let contentSummary = GetSummary(result.Document.GetItem().GetFieldValue("Content"), 300)
select new MPContentSearchResultItem()
{
Content = string.IsNullOrEmpty(contentSummary) ? GetSummary(result.Document.GetItem().GetFieldValue("Circumstances"), 300) : contentSummary
};
变量contentSummary
仅在查询中可用。
你可以用某种冗长的子表达式result.Document.GetItem()
做同样的事情(可能并不总是意味着更少的输入,但可以让事情更容易阅读):
from result in results
let item = result.Document.GetItem()
let contentSummary = GetSummary(item.GetFieldValue("Content"), 300)
select new MPContentSearchResultItem()
{
Content = string.IsNullOrEmpty(contentSummary) ? GetSummary(item.GetFieldValue("Circumstances"), 300) : contentSummary
};
答案 1 :(得分:2)
您可以使用let
clause:
var query = from result in results
let content = GetSummary(result.Document.GetItem().GetFieldValue("Content"), 300)
select new MPContentSearchResultItem()
{
Content = string.IsNullOrEmpty(content)
? GetSummary(result.Document.GetItem().GetFieldValue("Circumstances"), 300)
: content
};
List<MPContentSearchResultItem> list = query.ToList();