1
A
回答
2
這裏是我的建議:
var result = dbcrs.Where(item => res.FirstOrDefault(resItem => resItem.Id == item.Id) == null);
1
首先,你需要以查詢對DataTable的rows集合使用AsEnumerable()
,則不會在使用!Contains
這樣的:
var query = from r in dbcrs.AsEnumerable()
where !(from s in res select r.Id)
.Contains(r.Id)
select r;
1
一個例子使用Except和IEquatable執行此操作<>
這樣做的好處是您可以定義「Equals」的含義,因此可以使用兩個可能具有相同ID但不相等的列表。
例如你從兩個表中獲取數據,所以Id可以重複,但其他一些屬性定義它們是否相等。
class Crs:IEquatable<Crs>
{
public int Id { get; set; }
public string Description { get; set; }
public bool Equals(Crs other)
{
if (Object.ReferenceEquals(other, null))
return false;
if (Object.ReferenceEquals(this, other))
return true;
return Id.Equals(other.Id) && Description.Equals(other.Description);
}
public override int GetHashCode()
{
int hashId = Id.GetHashCode();
int hashDescription = Description == null ? 0 : Description.GetHashCode();
return hashId^hashDescription;
}
}
internal static void RunMe()
{
var dataTable = new List<Crs>(){
new Crs{Id=1, Description="First"},
new Crs{Id=2, Description="Second"},
new Crs{Id=5, Description="Fifth"}
};
var enumerable = new List<Crs>(){
new Crs{Id=2, Description="Second"},
new Crs{Id=4, Description="Fourth"}
};
var distinct = dataTable.Except(enumerable);
distinct.ToList().ForEach(d => Console.WriteLine("{0}: {1}", d.Id, d.Description));
}
0
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[]
{
new DataColumn("Id", typeof(System.Int32)),
new DataColumn("Name", typeof(System.String))
});
dt.Rows.Add (new Object[]{1,"Test"});
dt.Rows.Add(new Object[] {2, "Test" });
var l = new Int32[] { 2, 4 };
var l1 = dt.AsEnumerable().Where(p1 => Array.IndexOf(l, p1.Field<Int32>(0))<0).CopyToDataTable();
這將返回我們一行因爲DataTable中和陣列都具有一個共同的價值,這只是2。所以出放將是
2,測試
相關問題
- 1. 找到,如果在一個IEnumerable的一個項目也是另一個IEnumerable的
- 2. 擴展IEnumerable:如何返回最後一個不是string.empty元素?
- 3. 不知道如何實現IEnumerable這個類
- 4. Rx:可觀測量是否像IEnumerable那樣「可重複」,如果不是,這個代碼是如何工作的?
- 5. 如何郵編一個IEnumerable的自身
- 6. 如何解決以下,說明這個錯誤,這是不是一個功能
- 7. 檢查一個IEnumerable是否包含另一個IEnumerable的所有元素
- 8. x32 ABI是這是一個工具,如何使用這個
- 9. 如何訪問這個,這是一個對象字面還是?
- 10. 如何檢查一個元素是否在IEnumerable中重複?
- 11. 這不是一個var而不是let?
- 12. 隱藏IEnumerable到另一個IEnumerable C#
- 13. C#:從一個IEnumerable
- 14. 返回一個IEnumerable?
- 15. 休眠 - 如何加載到POJO這是不是一個實體
- 16. 如何交叉多個IEnumerable?
- 17. 如何連接兩個IEnumerable <T>到一個新的IEnumerable <T>?
- 18. 如何檢查IEnumerable是否是List?
- 19. 取消的DataServiceCollection:只有一個枚舉由這個IEnumerable的
- 20. 這是如何投擲一個InvalidCastException
- 21. 如何通過這是一個列表
- 22. 如何從一個枚舉創建一個IEnumerable
- 23. 如何爲一個項目創建一個IEnumerable列表?
- 24. 這一點。$ el.off不是一個函數
- 25. ViewBag,而不是在DropDownList IEnumerable
- 26. POCO不是IDictionary或IEnumerable
- 27. PIP說,這是一個包,由蟒蛇說,這是不是
- 28. 如何自IEnumerable
- 29. 如何循環訪問IEnumerable <string>並創建另一個IEnumerable <string>?
- 30. 我如何拆分一個IEnumerable <String>到IEnumerable的組<string>
'dbcrs.Where(項目=> res.FirstOrDefault(resItem => resItem.Id.TrimEnd()==項目。[0]的ToString()。TrimEnd ())== null);' – 2011-12-21 08:47:19
請更新答案。很感謝。 – 2011-12-21 08:59:25