2010-06-28 36 views
0

我怎麼能寫「中(選擇」在LINQ方法我怎麼能在(選擇方法用在LINQ

我想轉換:??

UPDATE ActualAmountsByLocation SET isCustomerItem=1 WHERE ItemBarcode IN (SELECT barcode FROM StockMaterials WHERE [email protected] AND ownership=1)

我已經嘗試是這樣的:

Array stockMaterials = (from s in stockMovementCtx.StockMaterials where s.barcode == Barcode && s.ownership ==1 select s).ToArray(); 
          actualAmountsByLocation = (from a in stockMovementCtx.ActualAmountsByLocations 
                 where a.ItemBarcode.Contains(stockMaterials) 
                 select a).First();
+0

這幾乎是我該怎麼做的。但我會使用.FirstOrDefault()加上空的檢查,而不是.First()。乾杯,亞歷克斯 – 2010-06-28 12:23:55

回答

2

要獲得IN查詢,您需要反轉包含的含義。另外,不需要實現第一個查詢IMO。

var stockMaterials = from s in stockMovementCtx.StockMaterials 
        where s.barcode == Barcode && s.ownership ==1 
        select s; 
actualAmountsByLocation = (from a in stockMovementCtx.ActualAmountsByLocations 
          where stockMaterials.Contains(a.ItemBarcode) 
          select a).First(); 
1

就快 取出.ToArray呼籲以防止直接執行的查詢,讓您stockMaterials類型變量IQueryable<StockMaterial>

0

這是你在找什麼?

ActualAmountsByLocation = StockMaterials.Where(s => s.barcode == Barcode && s.ownership == 1).ToArray(); 
0
var stockMaterials = (from s in stockMovementCtx.StockMaterials 
          where s.barcode == Barcode && s.ownership == 1 
          select s).ToArray(); 
    var actualAmountsByLocation = (from a in stockMovementCtx.ActualAmountsByLocations 
            where stockMaterials.Contains(a.ItemBarcode) 
            select a).First(); 
0

希望下面這段代碼示例有助於您

// these are using linq methods 
var barcodes = stockMovementCtx.StockMaterials 
       .Where(s => s.barcode == Barcode && s.ownership == 1) 
       .Select(s => s.barcode); 
var amounts = stockMovementCtx.ActualAmountsByLocations 
       .Where(a => barcodes.Contains(a.ItemBarCode)) 
       .FirstOrDefault(); 
// if you would like to use the query expressions instead, here they are 
//var barcodes = from s in stockMovementCtx.StockMaterials 
//    where s.barcode = Barcode && s.ownership == 1 
//    select s.barcode; 
//var amounts = (from a in stockMovementCtx.ActualAmountsByLocations 
//    where barcodes.Contains(a.ItemBarCode.Contains) 
//    select a).FirstOrDefault(); 

// helpful to use FirstOrDefault if you are not sure that the query will return a result 
if (amounts != null) { 
    // change value 
    amounts.IsCustomerItem = 1; 
    // update database 
    stockMovementCtx.SubmitChanges(); 
} 
0

LINQ的製作更新是那麼容易的事情,請查看以下示例中的代碼塊。

var user = (from s in dataContext.USERS 

調用用戶表,並設置條件。

where s.UserId.Equals(id) select s).FirstOrDefault();

我想要給用戶的電子郵件的變化(不要忘了這一點:如果你有ToList調用(),你需要控制列表計數,以避免例外例如:如果(user.Count> 0 )..)

更新用戶:

s.EmailAddress = [email protected]; 
dataContext.SubmitChanges(); 

查看資料的SubmitChanges後更新();