使用LINQ,如何在select运算符的结果中返回字符串const

时间:2010-09-24 01:25:50

标签: linq linqpad

在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做到这一点。

赛斯

1 个答案:

答案 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的快捷方式(编译器会自动复制属性名称) )。