在循環遍歷一個列表中的記錄時,我想在包含該項目的更多信息的另一列表中找到相應的行。嘗試使用LINQ從第一個列表中獲取此信息時,出現轉換錯誤。LINQ從一個通用列表中選擇以將值分配給另一個
public class qtyAvail
{
public string itemNumber;
public string qtyAv;
}
public class variance
{
public string siteID;
public string itemNumber;
public string varQty;
}
public void saveVariance(Context context)
{
var settings = PreferenceManager.GetDefaultSharedPreferences(context);
var siteID = settings.GetString("siteID", null);
updateInv(siteID);
var inst = new InventoryApp();
List<variance> ilist = new List<variance>();
List<qtyAvail> avail = new List<qtyAvail>();
SqliteDataReader dr;
var connection = new SqliteConnection("Data Source=" + dbPath);
connection.Open();
var c = connection.CreateCommand();
c.CommandText = "Select ItemNmbr, OnHnd - Alloc From PartInfo";
dr = c.ExecuteReader();
while (dr.Read())
{
qtyAvail qa = new qtyAvail();
qa.itemNumber = dr[0].ToString();
qa.qtyAv = dr[1].ToString();
avail.Add(qa);
}
dr.Close();
c.CommandText = "Select * From Items";
dr = c.ExecuteReader();
while (dr.Read())
{
variance v = new variance();
v.siteID = siteID;
v.itemNumber = dr[0].ToString();
v.varQty = from q in avail where q.itemNumber == dr[1].ToString() select q.qtyAv;
ilist.Add(v);
}
dr.Close();
connection.Close();
inst.saveVariance(siteID, ilist.ToArray());
}
當我構建解決方案,我得到
不能鍵入 '
System.Collections.Generic.IEnumerable<string>
' 隱式轉換爲 'string
'
在這裏我使用LINQ分配v.varQty
行。我確信有一些簡單的東西我缺少,但只是找不到正確的轉換,轉換等。我也意識到,我可以很容易地只是執行Sqlite表上的選擇來獲取信息,而不是使用列表,但我正在試圖將所有這些LINQ的東西都拿出來,所以我想讓它也以這種方式工作。
varqQty是一個字符串,您的IEnumerable字符串的選擇退貨,所以很明顯你不能分配,你的WHERE條件返回多個字符串.. – 2012-01-02 18:30:21