在LinqPad中,我有以下查询语句......
var genre = "Anime & Animation";
var minRating = 3.0;
var topNum = 30;
var query =
(from g in Genres
from t in g.Titles
where g.Name==genre
&& t.Instant.Available==true
&& t.AverageRating >= minRating
orderby t.AverageRating descending
select new {t.Name, t.Rating, t.AverageRating, t.ShortSynopsis}).Take(topNum);
query.Dump(string.Format("Top {0} {1} Instant Watch Movies with a {2:0.0} minimum average rating sorted by average rating in descending order.",topNum,genre,minRating));
我想在结果集中返回流派字符串变量。
另一种询问方式,使用TSQL,我会将“SELECT field1,field2,'Action& Adventure'作为来自MyTitles的流派”。那么你如何在Linq做到这一点。
赛斯
答案 0 :(得分:3)
您可以通过添加PropertyName = <value>
来指定匿名类型的其他成员,因此如果您要添加具有某个常量值的属性Genre
,您可以写:
new { t.Name, t.Rating, t.AverageRating,
t.ShortSynopsis, Genre = "Action & Adventure" }
类型的值可能与查询中的genre
变量或属性g.Name
相同,因此您可以使用此属性(而不是字符串文字):
new { t.Name, t.Rating, t.AverageRating,
t.ShortSynopsis, Genre = g.Name } // Or 'Genre = genre'
值得注意的是,如果你只是在匿名类型的构造中使用一些属性名称(例如t.Name
),它只是写Name = t.Name
的快捷方式(编译器会自动复制属性名称) )。