0
我正在運行數據庫中的一段代碼。然而,沒有支持的翻譯到SQL(使用LINQ到SQL)。linq if語句或存儲過程if語句
如何轉換此代碼邏輯ro內聯linq或在存儲過程?我不知道數據庫和存儲過程,所以最好我想寫在LINQ。
public Post GetPageOwner(int pageid)
{
var posts = (from dp in db.Posts where dp.pageid == pageid select dp);
var returned = posts;
if (posts.Count() > 0)
{
var latest = posts.OrderByDescending(o => o.Date).FirstOrDefault();
var sharedsamedayaslatest = (from p in posts where p.Date.AddDays(1) >= latest.Date select p);
if (sharedsamedayaslatest.Count() > 1)
{
var followedpost = (from p in posts from s in db.Subscriptions where s.Subscriber == UID && s.Subscribedto == p.UserId select p);
var count = followedpost.Count();
if (count == 1)
{
returned = followedpost;
}
else if (count > 1)
{
returned = (from s in followedpost let reposts = GetPostReposts(s.id) let rating = GetPostRating(s.id) let score = reposts + rating orderby score descending select s);
}
else
{
//no follower shared this post so return the most liked
returned = (from s in sharedsamedayaslatest let reposts = GetPostReposts(s.id) let rating = GetPostRating(s.id) let score = reposts + rating orderby score descending select s);
}
}
else
{
//no shares on the day the latest share
returned = sharedsamedayaslatest;
}
}
else
{
//only one post
returned = posts;
}
return returned.FirstOrDefault(); //order by userid gets a random one
}
我也許能幫助你,但我需要更多的信息。請提供與您的任務相關的每個表的表結構(包括PK和FK)以及您想要實現的僞代碼邏輯(因爲我懶得通過反向工程來了解它的代碼)。然後我會看看它是否可以用linq-to-sql可以轉換爲T-SQL的語句編寫。 – 2012-02-20 08:40:53
是「數據庫中的代碼段」SQL嗎? – Jodrell 2012-02-20 08:45:32
@MatteoMosca邏輯本身可以改變。這個想法只是爲了能夠使用linq中的if語句在db中爲每一行運行。所以這樣的事情(從db.table中的t到db.table2中的m,如果t.count> 1,選擇t否則如果t.count = 0(如果m。id == 1 select m else select t) – 2012-02-20 08:58:14